Создание и базовые методы
Создание и базовые методы
Создание массивов
// Литерал — предпочтительный способ
const empty = [];
const nums = [1, 2, 3, 4, 5];
const mixed = [1, 'hello', true, null];
// Array.from — из итерируемых или псевдомассивов
Array.from('hello') // ['h', 'e', 'l', 'l', 'o']
Array.from({ length: 5 }, (_, i) => i * 2) // [0, 2, 4, 6, 8]
Array.from(new Set([1, 2, 2, 3])) // [1, 2, 3] — уникальные
// Array.of — создаёт из аргументов
Array.of(1, 2, 3) // [1, 2, 3]
// new Array — лучше избегать
new Array(3) // [empty × 3] — не [3]!
new Array(1, 2, 3) // [1, 2, 3]
new Array(3) создаёт массив с 3 пустыми слотами (не значениями!). Array.from({ length: 3 }, () => 0) создаёт [0, 0, 0].Добавление и удаление элементов
const arr = [1, 2, 3];
// В конец
arr.push(4, 5); // arr = [1, 2, 3, 4, 5], возвращает 5 (новая длина)
// В начало
arr.unshift(0); // arr = [0, 1, 2, 3, 4, 5]
// С конца
const last = arr.pop(); // arr = [0, 1, 2, 3, 4], last = 5
// С начала
const first = arr.shift(); // arr = [1, 2, 3, 4], first = 0
splice — швейцарский нож
splice мутирует оригинальный массив — удаляет и/или вставляет элементы:
const arr = [1, 2, 3, 4, 5];
// splice(start, deleteCount, ...items)
arr.splice(1, 2); // удаляет 2 эл. с индекса 1: arr = [1, 4, 5]
arr.splice(1, 0, 10, 20); // вставляет без удаления: arr = [1, 10, 20, 4, 5]
arr.splice(2, 1, 99); // заменяет 1 элемент: arr = [1, 10, 99, 4, 5]
slice — извлечение без мутации
slice возвращает новый массив, не меняет оригинал:
const arr = [1, 2, 3, 4, 5];
arr.slice(1, 3) // [2, 3] — индексы 1 и 2 (3 — не включительно)
arr.slice(2) // [3, 4, 5] — от индекса 2 до конца
arr.slice(-2) // [4, 5] — последние 2 элемента
arr.slice() // [1, 2, 3, 4, 5] — копия массива
// Оригинал не изменён
console.log(arr); // [1, 2, 3, 4, 5]
concat — объединение массивов
const a = [1, 2];
const b = [3, 4];
// concat — создаёт новый массив
const combined = a.concat(b); // [1, 2, 3, 4]
const withMore = a.concat(b, [5, 6]); // [1, 2, 3, 4, 5, 6]
// Современный вариант — spread
const combined2 = [...a, ...b];
Разделите методы массива на две группы:
Мутирующие (изменяют оригинал):push, pop, shift, unshift, splice, sort, reverse, fill, copyWithin
Немутирующие (возвращают новый массив/значение):map, filter, reduce, slice, concat, find, findIndex, some, every, includes, indexOf
В ES2023 добавлены немутирующие версии: toSorted(), toReversed(), toSpliced(), with().