Skip to content

Массивы

Массивы

// Одномерный массив
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