Методы перебора массивов: forEach, keys, values, entries
🔍 Знакомство с методами перебора массивов
Массивы — это фундамент JavaScript, а их перебор — ежедневная задача каждого разработчика. Сегодня мы разберём мощные методы: forEach, keys, values и entries. Они помогут вам работать с массивами элегантно и эффективно!
🛠️ Метод forEach: перебор элементов
forEach — базовый метод для итерации по массиву. Он выполняет функцию для каждого элемента, не создавая новый массив (в отличие от map).
const fruits = ['apple', 'banana', 'cherry'];
fruits.forEach((fruit, index) => {
console.log(`${index + 1}. ${fruit}`);
});
// Вывод:
// 1. apple
// 2. banana
// 3. cherry
🔹 Особенности:
- Не возвращает значение (вернёт
undefined). - Не изменяет исходный массив (если только вы сами не сделаете это внутри функции).
- Нельзя остановить (в отличие от
for...ofсbreak).
💡 Совет: Используйте
forEachдля простых операций (логирование, модификация элементов), когда не нужен новый массив.
🗝️ Метод keys: итерация по индексам
Метод keys() возвращает итератор с индексами массива. Это полезно, если вам нужны только позиции элементов.
const colors = ['red', 'green', 'blue'];
const iterator = colors.keys();
for (const key of iterator) {
console.log(key); // 0, 1, 2
}
🔹 Где это пригодится?
- Когда нужно работать только с индексами (например, для сопоставления с другим массивом).
- В комбинации с другими методами, например
entries().
💎 Метод values: итерация по значениям
values() возвращает итератор с значениями массива. Похож на for...of, но в виде отдельного метода.
const pets = ['cat', 'dog', 'parrot'];
const petIterator = pets.values();
for (const pet of petIterator) {
console.log(pet); // 'cat', 'dog', 'parrot'
}
🔹 Зачем использовать values()?
- Когда нужен именно итератор (например, для передачи в генераторы или другие функции).
- Для единообразия кода, если уже используете
keys()илиentries().
🔗 Метод entries: пары «ключ-значение»
entries() — один из самых мощных методов! Он возвращает итератор с парами [индекс, элемент]. Идеально подходит, когда нужны и индекс, и значение.
const languages = ['JavaScript', 'Python', 'Rust'];
const entries = languages.entries();
for (const [index, language] of entries) {
console.log(`${index}: ${language}`);
}
// Вывод:
// 0: JavaScript
// 1: Python
// 2: Rust
🔹 Пример использования:
Преобразование массива в объект с сохранением индексов:
const arr = ['zero', 'one', 'two'];
const obj = Object.fromEntries(arr.entries());
console.log(obj); // { 0: 'zero', 1: 'one', 2: 'two' }
📊 Сравнение методов
| Метод | Возвращает | Изменяет массив? | Использование |
|---|---|---|---|
forEach |
undefined |
❌ Нет | Просто перебрать элементы. |
keys |
Итератор индексов | ❌ Нет | Получить индексы массива. |
values |
Итератор значений | ❌ Нет | Получить значения массива. |
entries |
Итератор пар | ❌ Нет | Получить и индекс, и значение. |
🔥 Практика: комбинируем методы
Давайте используем entries() для логирования элементов с чётными индексами:
const numbers = [10, 20, 30, 40, 50];
for (const [index, value] of numbers.entries()) {
if (index % 2 === 0) {
console.log(`Чётный индекс ${index}: ${value}`);
}
}
// Вывод:
// Чётный индекс 0: 10
// Чётный индекс 2: 30
// Чётный индекс 4: 50
🎯 Итоги
forEach— простой перебор без создания нового массива.keys— получаем индексы.values— получаем значения.entries— мощный инструмент для работы с парами «индекс-значение».
Теперь вы готовы перебирать массивы как профессионал! 🚀 Пишите чистый код и используйте подходящий метод для каждой задачи.