Как перебрать массив с индексом
Короткий ответ
В forEach() функция получает индекс вторым аргументом:
['a', 'b', 'c'].forEach((value, index) => {
console.log(index + ': ' + value);
});Результат:
0: a
1: b
2: cЦикл for...of
В for...of индекс даёт метод entries(). Такой цикл можно прервать через break:
for (const [index, value] of ['a', 'b', 'c'].entries()) {
console.log(index + ': ' + value);
}Результат:
0: a
1: b
2: cНумерация с единицы
Индексы начинаются с нуля. Для привычной нумерации прибавьте единицу:
['tea', 'milk'].forEach((item, index) => {
console.log(index + 1 + '. ' + item);
});Результат:
1. tea
2. milkЧастая ошибка
forEach() нельзя остановить через break, а return внутри него только пропускает текущий элемент. Если цикл нужно прервать, используйте for...of:
[1, 2, 3, 4].forEach((n) => {
if (n > 2) return;
console.log('forEach', n);
});
for (const n of [1, 2, 3, 4]) {
if (n > 2) break;
console.log('for...of', n);
}Результат:
forEach 1
forEach 2
for...of 1
for...of 2Функции из этого ответа
- Array.prototype.forEach — Выполняет функцию для каждого элемента массива.
- Array.prototype.entries — Возвращает пары индекс — элемент для перебора в цикле for...of.