Вебсправочник
Справочник JavaScript

Array.entries(): перебор пар индекса и значения

Entries возвращает итератор пар «индекс — значение» для массива. Это удобно, когда в цикле одновременно нужны положение элемента и его содержимое.

Назначение

Entries возвращает итератор пар «индекс — значение» для массива. Это удобно, когда в цикле одновременно нужны положение элемента и его содержимое.

Как это работает

Итератор можно читать через for…of или преобразовать в массив. Он не является готовым снимком всех пар; его состояние меняется по мере обхода. Пропуски массива при таком переборе представлены значением undefined.

Пример

const lessons = ["HTML", "CSS"];
const pairs = [...lessons.entries()];
console.assert(pairs[0][0] === 0 && pairs[0][1] === "HTML");
console.assert(pairs[1][0] === 1 && pairs[1][1] === "CSS");
const sparse = [...["a", , "c"].entries()];
console.assert(sparse.length === 3 && sparse[1][1] === undefined);
for (const [index, title] of lessons.entries()) console.log(index + 1, title);

Что должно получиться

В консоли выводятся порядковые номера и названия двух уроков. Пары хранят исходные нулевые индексы; прибавление единицы сделано только для пользовательского представления.

Граница применения и частая ошибка

Не путайте Array.entries с Object.entries: у них разные формы результата и правила перечисления. Изменение массива во время обхода усложняет ожидаемый результат. Для стабильного отчёта сначала сформируйте нужный снимок данных.

Самостоятельная проверка

Сравните обычный цикл по значениям и цикл по entries. Добавьте пустую позицию, затем явное undefined. Объясните, почему увиденные пары сами по себе не доказывают наличие собственного элемента на каждом индексе.

Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.