Массивы: основы
Массив — упорядоченная коллекция элементов. Элементы доступны по индексу.
Создание
const empty = [];
const numbers = [1, 2, 3];
const mixed = [1, 'строка', true, null, { x: 1 }];
Через конструктор:
const arr = new Array(1, 2, 3);
const length3 = new Array(3); // [empty × 3]
Из итерируемого:
Array.from('abc'); // ['a', 'b', 'c']
Array.from({ length: 3 }, (_, i) => i); // [0, 1, 2]
Array.of(1, 2, 3); // [1, 2, 3]
Доступ
const arr = ['a', 'b', 'c'];
arr[0]; // 'a'
arr[1]; // 'b'
arr[arr.length - 1]; // 'c'
arr.at(-1); // 'c'
arr.at(-2); // 'b'
Индексация с 0.
Длина
arr.length; // 3
Изменение длины:
const arr = [1, 2, 3, 4, 5];
arr.length = 3; // [1, 2, 3] — обрезает
arr.length = 5; // [1, 2, 3, empty, empty]
Добавление и удаление
const arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4], возвращает длину
arr.pop(); // [1, 2, 3], возвращает 4
arr.unshift(0); // [0, 1, 2, 3], возвращает длину
arr.shift(); // [1, 2, 3], возвращает 0
push/pop— с конца (быстро)unshift/shift— с начала (медленно, сдвигает все элементы)
Изменение
arr[0] = 'x';
arr[10] = 'y'; // создаст разреженный массив
splice
Универсальный метод для вставки и удаления:
const arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // удалить 1 элемент с индекса 2 → [1, 2, 4, 5]
arr.splice(1, 0, 'new'); // вставить с индекса 1
arr.splice(1, 2, 'a', 'b'); // заменить 2 элемента на 'a', 'b'
arr.splice(-1, 1); // удалить последний
Возвращает массив удалённых элементов. Мутирует исходный.
slice
Копия части массива, без мутации:
const arr = [1, 2, 3, 4, 5];
arr.slice(1, 3); // [2, 3]
arr.slice(2); // [3, 4, 5]
arr.slice(-2); // [4, 5]
arr.slice(); // копия всего
concat
Объединение:
[1, 2].concat([3, 4]); // [1, 2, 3, 4]
[1].concat(2, [3], 4); // [1, 2, 3, 4]
join
Массив в строку:
['a', 'b', 'c'].join('-'); // 'a-b-c'
[1, 2, 3].join(''); // '123'
Spread
Копия и объединение:
const copy = [...arr];
const merged = [...a, ...b];
const withExtra = [0, ...arr, 10];
Деструктуризация
const [first, second, ...rest] = [1, 2, 3, 4];
// first = 1, second = 2, rest = [3, 4]
Пропуск:
const [, second] = [1, 2, 3];
// second = 2
Значения по умолчанию:
const [a = 10, b = 20] = [1];
// a = 1, b = 20
Обмен переменных:
let a = 1, b = 2;
[a, b] = [b, a];
Многомерные
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
matrix[1][2]; // 6
Проверка
Array.isArray([]); // true
Array.isArray({}); // false
Array.isArray('строка'); // false
Разреженные массивы
const sparse = [1, , 3]; // [1, empty, 3]
sparse.length; // 3
sparse[1]; // undefined
Избегай — поведение методов непредсказуемо.
Итоги
- Массивы — упорядоченные коллекции
- Индексация с 0,
length push/pop/shift/unshiftspliceмутирует,sliceкопирует- Spread для копий
- Деструктуризация для чтения