Массивы
Массивы
// Одномерный массивconst students = ["alex", "bob", "carl"];console.log(students);console.log(students[0]);
students[2] = "charlie";console.log(students);
// Двумерные массивыconst studentsMarks = [["alex", 5],["bob", 3],["carl", 4]];console.log(studentsMarks);console.log(studentsMarks[0]);console.log(studentsMarks[0][0]);console.log(studentsMarks[0][1]);
studentsMarks[0][1] -= 1;console.log(studentsMarks);
// Деструктуризация массиваconst student = ["alex", 24]const [name, age] = student;console.log(name);console.log(age);
Ссылочные и значимые типы данных
// Значимый тип данныхlet a = 5;let b = a;console.log(a);
// ссылочный тип данных (массив)let a = [1, 2, 3];let b = a;b[0] = 10;console.log(a);console.log(b);
Поверхностное копирование, Глубокое копирование
// Поверхностное копирование (массив)let a = [1, 2, 3];let b = [...a];b[0] = 10;console.log(a);console.log(b);
// Проблемы поверхностного копирования (массив)let a = [1, [2, 3], 4];let b = [...a];b[1][0] = 10;console.log(a);console.log(b);
// Глубокое копирование (массив)let a = [1, [2, 3], 4];let b = JSON.parse(JSON.stringify(a));b[1][0] = 10;console.log(a);console.log(b);
Сравнение массивов
const a = [1, 2, 3, 4, 5];const b = [1, 2, 3, 4, 5];
console.log(a === b);console.log(a == b);
const c = a;
console.log(a === c);console.log(a == c);
// глубокое сравнениеconst a = [1, 2, 3, 4, 5];const b = [1, 2, 3, 4, 5];
console.log(JSON.stringify(a)===JSON.stringify(b)); // true
Методы массива
concat
concat()
- объединяет два или более массивов и возвращает новый массив.
const fruits = ["Apple", "Banana"];const vegetables = ["Carrot", "Potato"];
const food = fruits.concat(vegetables);
console.log(food); // ["Apple", "Banana", "Carrot", "Potato"]
join,split
join()
- объединяет все элементы массива в строку с разделителем. separator
- строка, которая будет использоваться в качестве разделителя, по умолчанию запятая.
const fruits = ["Apple", "Banana", "Cherry"];
const result = fruits.join();
console.log(result); // "Apple,Banana,Cherry"
const resultWithSeparator = fruits.join(" | ");
console.log(resultWithSeparator); // "Apple | Banana | Cherry"
split()
- разбивает строку на массив подстрок. separator
- строка, по которой будет производиться разбиение, по умолчанию запятая.
const fruits = "Apple, Banana, Cherry";
const result = fruits.split(", ");
console.log(result); // ["Apple", "Banana", "Cherry"]
push,pop
push()
- добавляет один или более элементов в конец массива и возвращает новую длину массива.
const fruits = ["Apple", "Banana"];
const newLength = fruits.push("Cherry");
console.log(fruits); // ["Apple", "Banana", "Cherry"]console.log(newLength); // 3
pop()
- удаляет последний элемент из массива и возвращает его.
const fruits = ["Apple", "Banana", "Cherry"];
const lastFruit = fruits.pop();
console.log(fruits); // ["Apple", "Banana"]console.log(lastFruit); // "Cherry"
shift,unshift
shift()
- удаляет первый элемент из массива и возвращает его.
const fruits = ["Apple", "Banana", "Cherry"];
const firstFruit = fruits.shift();
console.log(fruits); // ["Banana", "Cherry"]console.log(firstFruit); // "Apple"
unshift()
- добавляет один или более элементов в начало массива и возвращает новую длину массива.
const fruits = ["Apple", "Banana"];
const newLength = fruits.unshift("Cherry");
console.log(fruits); // ["Cherry", "Apple", "Banana"]console.log(newLength); // 3
slice,splice
slice()
- возвращает часть массива в виде нового массива. start
- индекс начала, end
- индекс конца (не включительно).
const fruits = ["Apple", "Banana", "Cherry", "Date"];
const result = fruits.slice(1, 3);
console.log(result); // ["Banana", "Cherry"]console.log(fruits); // ["Apple", "Banana", "Cherry", "Date"]
splice()
- изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые элементы. start
- индекс начала, deleteCount
- количество удаляемых элементов, item1, item2, ...
- элементы, которые будут добавлены.
const fruits = ["Apple", "Banana", "Cherry", "Date"];
const result = fruits.splice(1, 2, "Grape", "Kiwi");
console.log(result); // ["Banana", "Cherry"]console.log(fruits); // ["Apple", "Grape", "Kiwi", "Date"]
const fruits = ["Apple", "Banana", "Cherry", "Date"];
const result = fruits.splice(2, 1);
console.log(result); // ["Cherry"]
console.log(fruits); // ["Apple", "Banana", "Date"]
reverse
reverse()
- изменяет порядок элементов массива на обратный.
const fruits = ["Apple", "Banana", "Cherry"];
fruits.reverse();
console.log(fruits); // ["Cherry", "Banana", "Apple"]
sort
sort()
- сортирует элементы массива. По умолчанию сортировка происходит в алфавитном порядке, но можно передать функцию сравнения для определения порядка сортировки.
const fruits = ["Banana", "Apple", "Cherry"];
fruits.sort();
console.log(fruits); // ["Apple", "Banana", "Cherry"]
const numbers = [40, 100, 1, 5, 25, 10];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 5, 10, 25, 40, 100]
indexOf,lastIndexOf
indexOf()
- возвращает индекс первого вхождения элемента в массиве. Если элемент не найден, возвращает -1.
const fruits = ["Apple", "Banana", "Cherry"];
const index = fruits.indexOf("Banana");
console.log(index); // 1
lastIndexOf()
- возвращает индекс последнего вхождения элемента в массиве. Если элемент не найден, возвращает -1.
const fruits = ["Apple", "Banana", "Cherry", "Banana"];
const index = fruits.lastIndexOf("Banana");
console.log(index); // 3
forEach,map
forEach()
- выполняет указанную функцию один раз для каждого элемента массива.
const fruits = ["Apple", "Banana", "Cherry"];
fruits.forEach((fruit, index) => { console.log(fruit, index);});
map()
- создает новый массив с результатами вызова указанной функции для каждого элемента массива.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.map((number) => number * 2);
console.log(result); // [2, 4, 6, 8, 10]
find,findIndex,filter
find()
- возвращает первый элемент массива, удовлетворяющий условию, заданному в функции. Если элемент не найден, возвращает undefined
.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.find((number) => number > 3);
console.log(result); // 4
findIndex()
- возвращает индекс первого элемента массива, удовлетворяющего условию, заданному в функции. Если элемент не найден, возвращает -1.
const numbers = [1, 2, 3, 4, 5];
const index = numbers.findIndex((number) => number > 3);
console.log(index); // 3
filter()
- создает новый массив со всеми элементами, прошедшими проверку, заданную в функции.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.filter((number) => number % 2 === 0);
console.log(result); // [2, 4]
every,some,includes
every()
- проверяет, удовлетворяют ли все элементы массива условие, заданное в функции. Возвращает true
или false
.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.every((number) => number > 0);
console.log(result); // true
some()
- проверяет, удовлетворяет ли хотя бы один элемент массива условие, заданное в функции. Возвращает true
или false
.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.some((number) => number > 5);
console.log(result); // false
includes()
- проверяет, содержит ли массив указанный элемент. Возвращает true
или false
.
const fruits = ["Apple", "Banana", "Cherry"];
const result = fruits.includes("Banana");
console.log(result); // true
reduce,reduceRight
reduce()
- применяет функцию к аккумулятору и каждому значению массива (слева направо), чтобы свести его к одному значению.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.reduce( (accumulator, currentValue) => accumulator + currentValue, 0);
console.log(result); // 15
reduceRight()
- применяет функцию к аккумулятору и каждому значению массива (справа налево), чтобы свести его к одному значению.
const numbers = [1, 2, 3, 4, 5];
const result = numbers.reduceRight( (accumulator, currentValue) => accumulator + currentValue, 0);
console.log(result); // 15
fill
fill()
- заполняет все элементы массива статическим значением. value
- значение, которым заполняются элементы, start
- индекс начала, end
- индекс конца (не включительно).
const numbers = [1, 2, 3, 4, 5];
numbers.fill(0, 1, 4);
console.log(numbers); // [1, 0, 0, 0, 5]
flat,flatMap
flat()
- создает новый массив, в котором все подмассивы внутри исходного массива объединены в один уровень. depth
- глубина вложенности, по умолчанию 1.
const numbers = [1, [2, 3], [4, [5]]];
const result = numbers.flat();
console.log(result); // [1, 2, 3, 4, [5]]
flatMap()
- создает новый массив, в котором все подмассивы внутри исходного массива объединены в один уровень, а затем применяет к каждому элементу функцию и объединяет результаты в новый массив.
const numbers = [1, 2, 3];
const result = numbers.flatMap((number) => [number, number * 2]);
console.log(result); // [1, 2, 2, 4, 3, 6]
isArray
isArray()
- проверяет, является ли переданный аргумент массивом. Возвращает true
или false
.
const fruits = ["Apple", "Banana", "Cherry"];
const result = Array.isArray(fruits);
console.log(result); // true