Масив методи, що перебирають
…Ну а для їх підтримки в IE8 просто підключіть бібліотеку ES5-shim.
Метод «arr.forEach(callback[, thisArg])» використовується для перебору масиву.
Він для кожного елемента масиву викликає функцію callback.
Цій функції він передає три параметри callback(item, i, arr):
- item – ще один елемент масиву.
- i – його номер.
- arr – масив, що перебирається.
Другий, необов'язковий аргумент длякожного дозволяє вказати контекст цього для callback . Ми обговоримо його в деталях трохи згодом, зараз він нам не важливий.
Метод forEach нічого не повертає, його використовують тільки для перебору як більш «елегантний» варіант, ніж звичайний цикл for .
Метод "arr.filter(callback[, thisArg])" використовується для фільтрації масиву через функцію.
Він створює новий масив, до якого увійдуть лише ті елементи arr , котрим виклик callback(item, i, arr) поверне true .
Метод «arr.map(callback[, thisArg])» використовується для трансформації масиву.
Він створює новий масив, який складатиметься з результатів виклику callback(item, i, arr) для кожного елемента arr.
Ці методи використовують для перевірки масиву.
- Метод «arr.every(callback[, thisArg])»» повертає true, якщо виклик callback поверне true для кожного елемента arr.
- Метод "arr.some(callback[, thisArg])" повертає true , якщо виклик callback поверне true для якогось елемента arr .
reduce/reduceRight
Метод «arr.reduce(callback[, initialValue])» використовується для послідовної обробки кожного елемента масиву із збереженням проміжного результату.
Це один із найскладніших методів для роботи з масивами. Але його варто освоїти,тому що часом з його допомогою можна в кілька рядків вирішити завдання, яке інакше зажадало б у рази більше місця та часу.
Метод reduce використовується для обчислення на основі масиву будь-якого єдиного значення, інакше говорять для згортки масиву. Далі ми розберемо приклад для обчислення суми.
Він застосовує функцію callback по черзі до кожного елемента масиву ліворуч, зберігаючи при цьому проміжний результат.
Аргументи функції callback(previousValue, currentItem, index, arr) :
- previousValue – останній результат виклику функції, він «проміжний результат».
- currentItem – поточний елемент масиву, елементи перебираються по черзі ліворуч-праворуч.
- index – номер поточного елемента.
- arr - масив, що обробляється.
Крім callback, методу можна передати «початкове значення» - аргумент initialValue. Якщо він є, то на першому виклику значення previousValue дорівнює initialValue , а якщо у reduce немає другого аргументу, то воно дорівнює першому елементу масиву, а перебір починається з другого.
Найпростіше зрозуміти роботу методу reduce з прикладу.
Наприклад, як «згортки» ми хочемо отримати суму всіх елементів масиву.
Ось рішення в один рядок:
Розберемо, що у ньому відбувається.
При першому запуску sum - вихідне значення, з якого починаються обчислення, дорівнює нулю (другий аргумент reduce).
Спочатку анонімна функція викликається з цим початковим значенням і першим елементом масиву, результат запам'ятовується і передається в наступний виклик вже з другим аргументом масиву, потім нове значення бере участь у обчисленнях з третім аргументом і так далі.
Потік обчислень виходить такий
У вигляді таблиці де кожен рядок –виклик функції на черговому елементі масиву: