Кратко
Помимо map/filter/reduce, массивы имеют: find (первый подходящий), findIndex (его индекс), some/every (проверки), flat/flatMap (выравнивание), sort (сортировка), Array.from (создание). Все они не мутируют (кроме sort).
Подробно
Поиск и проверки: find(fn) — первый подходящий элемент или undefined findIndex(fn) — индекс первого подходящего или -1 some(fn) — хотя бы один true → true every(fn) — все true → true includes(value) — содержит ли элемент
Преобразование: flat(depth) — выравнивание вложенности flatMap(fn) — map + flat(1) Array.from(arrayLike) — создание массива из iterable/array-like
Сортировка (мутирует!): sort(fn) — сортирует на месте
Важно:
- find → один элемент
- filter → массив
- sort мутирует исходный массив!
- default sort — по строкам: [10, 9, 8] → [10, 8, 9]
Ментальная модель
Массив — как команда работников. find — найти первого подходящего. filter — оставить подходящих. sort — рассортировать. flat — выровнять иерархию.
Примеры
**Самый простой:**
const nums = [1, 2, 3, 4, 5];
console.log(nums.find(x => x > 3)); // 4
console.log(nums.findIndex(x => x > 3)); // 3
console.log(nums.some(x => x > 4)); // true
console.log(nums.every(x => x > 0)); // truefind/findIndex — поиск. some/every — проверки.
**Простой:**
const nested = [1, [2, 3], [4, [5, 6]]];
console.log(nested.flat()); // [1, 2, 3, 4, [5, 6]]
console.log(nested.flat(2)); // [1, 2, 3, 4, 5, 6]
const words = ['hello world', 'foo bar'];
console.log(words.flatMap(w => w.split(' ')));
// ['hello', 'world', 'foo', 'bar']flat выравнивает. flatMap = map + flat.
**Реальный пример:**
// ⚠️ sort мутирует!
const arr = [3, 1, 4, 1, 5];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 1, 3, 4, 5] — оригинальный изменён!
// БЕЗ мутации:
const sorted = [...arr].sort((a, b) => a - b);
// Array.from для создания из DOM NodeList:
const divs = document.querySelectorAll('div');
const divArray = Array.from(divs);
divArray.forEach(div => console.log(div.className));sort мутирует! Для иммутабельности — [...arr].sort().
Частые ошибки
**Неправильно:** Забывать, что sort мутирует
**Почему:** arr.sort() изменяет arr! Это не создаёт новый массив.
**Правильно:** Для иммутабельности: [...arr].sort().
**Неправильно:** Использовать sort без компаратора для чисел
**Почему:** sort() по умолчанию сортирует как строки: [10, 9, 8] → [10, 8, 9].
**Правильно:** Для чисел: sort((a, b) => a - b).
**Неправильно:** Путать flat и flatMap
**Почему:** flat выравнивает вложенность. flatMap = map + flat(1).
**Правильно:** flat — выравнивание. flatMap — преобразование + выравнивание.
Важно запомнить
- find → один элемент, findIndex → его индекс
- some → хотя бы один, every → все
- flat выравнивает, flatMap = map + flat
- sort мутирует! Для иммутабельности — [...arr].sort()
- Array.from создаёт массив из iterable/array-like
Связь
Назад: Вы знаете базовые методы массивов (J14-J15) — теперь у вас есть полный инструментарий.
Вперёд: Следующий урок (JI18) — Map и Set для коллекций «ключ-значение» и уникальных значений.