foreach
Я говорил, что циклы — не всегда самое лучшее решение, но какие вообще есть альтернативы?
Чем можно заменить подобный цикл?
for (var i =1; l = arr.length; i< l; ++i){
console.log(arr[i]);
}
Например foreach.
Array.prototype.forEach
arr.forEach(function(item){
console.log(item);
});
Вместо пробегать по списку руками, мы можем использовать
метод массива. Передадим туда функцию обрабатывающую каждый элемент и получим необходимый результат.
Но в чем принципиальная разница между этим
for (var i =1; l = arr.length; i< l; ++i){
console.log(arr[i]);
}
и этим
arr.forEach(function(item){
console.log(item);
});
?
К сожалению, синтаксис для описания функций в JS достаточно многословен, поэтому мы не получили значительной экономии в количестве написанного текста.
Но есть еще кое что. Глядя на код, можно сказать, чему уделяется внимание в каждой из реализаций.
Первый участок ориентирован на саму механику цикла. Взять число, увеличить его на единицу, получить элемент массива по индексу, произвести действие.
Второй пример гораздо проще для понимания. Мы делаем что-то с каждым элементом списка.
Во втором примере уровень абстракции гораздо выше. И он позволяет подходить к решению задачи с другой стороны.
Итак, для чего мы можем использовать циклы:
- Побочные эффекты
- Трансформация
- Фильтры
- Комбинирование элементов
- Еще куча вариантов