Массивы
Создание
const arr = [1, 2, 3];
const empty = [];
const from = Array.from('abc'); // ['a', 'b', 'c']
const of = Array.of(1, 2, 3); // [1, 2, 3]
const filled = new Array(5).fill(0); // [0, 0, 0, 0, 0]
Доступ
const arr = ['a', 'b', 'c'];
arr[0]; // 'a'
arr[arr.length - 1]; // 'c'
arr.at(-1); // 'c' — с конца
Длина
arr.length; // 3
arr.length = 2; // обрезает
Добавление и удаление
arr.push('d'); // в конец, возвращает длину
arr.pop(); // из конца, возвращает элемент
arr.unshift('z'); // в начало
arr.shift(); // из начала
Изменение
arr[0] = 'x';
arr.splice(1, 1); // удалить 1 элемент с индекса 1
arr.splice(1, 0, 'y'); // вставить
Поиск
arr.indexOf('b'); // 1
arr.lastIndexOf('a');
arr.includes('a'); // true
arr.find((x) => x === 'b'); // 'b'
arr.findIndex((x) => x === 'b'); // 1
Перебор
arr.forEach((item, index) => console.log(item, index));
Преобразование
map
Применяет функцию к каждому элементу:
[1, 2, 3].map((x) => x * 2); // [2, 4, 6]
filter
Оставляет подходящие:
[1, 2, 3, 4].filter((x) => x % 2 === 0); // [2, 4]
reduce
Сворачивает в одно значение:
[1, 2, 3].reduce((acc, x) => acc + x, 0); // 6
С объектом:
['a', 'b', 'a'].reduce((acc, x) => {
acc[x] = (acc[x] ?? 0) + 1;
return acc;
}, {});
// { a: 2, b: 1 }
flat и flatMap
[1, [2, [3]]].flat(2); // [1, 2, 3]
[1, 2].flatMap((x) => [x, x * 2]); // [1, 2, 2, 4]
Проверки
[1, 2, 3].some((x) => x > 2); // true
[1, 2, 3].every((x) => x > 0); // true
Сортировка
[3, 1, 2].sort(); // [1, 2, 3] — по строке
[10, 2, 1].sort(); // [1, 10, 2] — лексикографически
[10, 2, 1].sort((a, b) => a - b); // [1, 2, 10]
sort мутирует массив. Копия:
[...arr].sort();
Разворот
[1, 2, 3].reverse(); // мутирует
[...arr].reverse(); // копия
[1, 2, 3].toReversed(); // ES2023, не мутирует
Объединение и нарезка
[1, 2].concat([3, 4]); // [1, 2, 3, 4]
[1, 2, 3, 4].slice(1, 3); // [2, 3]
Spread
const a = [1, 2];
const b = [3, 4];
const c = [...a, ...b]; // [1, 2, 3, 4]
Копия:
const copy = [...arr];
Деструктуризация
const [first, second, ...rest] = [1, 2, 3, 4];
// first = 1, second = 2, rest = [3, 4]
Строка ↔ массив
'abc'.split(''); // ['a', 'b', 'c']
['a', 'b'].join(''); // 'ab'
Цепочки
const result = users
.filter((u) => u.active)
.map((u) => u.name)
.sort();
Итоги
push,pop,shift,unshiftmap,filter,reduce— основаfind,some,everysortмутирует — копируй- Spread для копий и объединения
- Деструктуризация для чтения