Кратко
forEach — перебирает каждый элемент (без return). for...of — перебирает элементы с возможностью break. some — проверяет, есть ли хотя бы один подходящий. every — проверяет, все ли подходят. includes — проверяет наличие элемента.
Подробно
forEach(callback) — выполняет действие для каждого элемента: const fruits = ['яблоко', 'банан']; fruits.forEach(fruit => console.log(fruit)); // Выведет каждое название. Возвращает undefined!
for...of — перебор с возможностью break: for (const fruit of fruits) { if (fruit === 'банан') break; console.log(fruit); }
some(callback) — возвращает true, если хотя бы один элемент проходит проверку: [1, 2, 3].some(x => x > 2); // true (3 > 2)
every(callback) — возвращает true, если ВСЕ элементы проходят проверку: [1, 2, 3].every(x => x > 0); // true [1, 2, 3].every(x => x > 1); // false (1 не > 1)
includes(value) — проверяет наличие элемента: ['а', 'б', 'в'].includes('б'); // true
findIndex(callback) — возвращает индекс первого подходящего: [10, 20, 30].findIndex(x => x === 20); // 1
Ментальная модель
forEach — как проверить каждый предмет на полке (просто посмотреть). some/every — как задать вопрос: «хотя бы один?» / «все ли?». includes — как спросить: «есть ли это здесь?».
Примеры
**Самый простой:**
const numbers = [1, 2, 3];
numbers.forEach(n => console.log(n)); // 1, 2, 3forEach перебирает каждый элемент и выполняет функцию. Не возвращает ничего.
**Простой:**
const ages = [15, 22, 17, 30];
const hasAdult = ages.some(age => age >= 18);
const allAdult = ages.every(age => age >= 18);
console.log(hasAdult); // true (22 и 30)
console.log(allAdult); // false (15 и 17)some — «хотя бы один?». every — «все ли?».
**Реальный пример:**
const users = [
{ name: 'Анна', active: true },
{ name: 'Пётр', active: false },
{ name: 'Мария', active: true }
];
const activeCount = users.filter(u => u.active).length;
const hasInactive = users.some(u => !u.active);
console.log(activeCount); // 2
console.log(hasInactive); // trueЦепочки методов позволяют выразить сложную логику в одной строке.
Частые ошибки
**Неправильно:** Использовать break/continue в forEach
**Почему:** forEach — это не цикл. break/continue не работают.
**Правильно:** Для break/continue используйте for...of.
**Неправильно:** Думать, что forEach возвращает массив
**Почему:** forEach всегда возвращает undefined.
**Правильно:** Для создания нового массива используйте map.
**Неправильно:** Забывать, что some/every возвращают boolean
**Почему:** some/every — это проверки, они не модифицируют массив.
**Правильно:** some/every → true/false. Для фильтрации — filter.
Важно запомнить
- forEach — перебор без return
- for...of — перебор с break/continue
- some — хотя бы один true → true
- every — все true → true
- includes — проверка наличия элемента
Связь
Назад: Вы знаете map/filter/find (J14) — теперь вы знаете полный набор методов перебора.
Вперёд: Следующий урок (J16) — функции высшего порядка: передача функций как аргументов.