как работают методы массивов map filter и reduce
Ответы
Методы массивов map()
, filter()
и reduce()
— это встроенные функции в JavaScript, которые помогают удобно обрабатывать элементы массивов. Каждый из этих методов решает свою задачу и является частью функционального программирования. Давайте рассмотрим их подробнее.
Метод map()
преобразует каждый элемент массива и создает новый массив с результатами.
const newArray = originalArray.map((currentValue, index, array) => {
// Возвращаемое значение
});
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2); // [2, 4, 6, 8]
map
проходит по каждому элементу массива.- Для каждого элемента вызывает функцию и передает элемент и его индекс.
- Возвращенное значение добавляется в новый массив.
- Возвращается новый массив, оригинальный остается без изменений.
Метод filter()
отбирает элементы массива по заданному условию и создает новый массив с подходящими элементами.
const newArray = originalArray.filter((currentValue, index, array) => {
// Возвращаемое значение (true/false)
});
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0); // [2, 4]
filter()
проходит по каждому элементу массива.- Для каждого элемента вызывает функцию и передает элемент и его индекс.
- Если функция возвращает
true
, элемент добавляется в новый массив; еслиfalse
— пропускается. - Возвращается новый массив с отобранными элементами, оригинальный остается неизменным.
Метод reduce()
обрабатывает массив и сводит его к единственному значению (например, сумме элементов).
const result = originalArray.reduce((accumulator, currentValue) => {
// Возвращаемое значение для следующей итерации
}, initialValue);
Пример:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, num) => acc + num, 0); // 10
reduce()
начинает с первого элемента массива (или сinitialValue
).- Для каждого элемента (начиная со второго) вызывает функцию, передавая аккумулятор и текущий элемент.
- Функция возвращает новое значение аккумулятора для следующей итерации.
- После обработки всех элементов возвращается итоговое значение.
Итог
map()
— для преобразования элементов.filter()
— для выбора элементов по условиям.reduce*()
— для сворачивания массива в одно значение.
Эти методы делают код более чистым и читаемым, избавляя от необходимости использовать циклы for
0
0