как работают методы массивов map filter и reduce

Аватар пользователя Nikolai Gagarinov
Nikolai Gagarinov
14 апреля 2025

Методы массивов 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]
  1. map проходит по каждому элементу массива.
  2. Для каждого элемента вызывает функцию и передает элемент и его индекс.
  3. Возвращенное значение добавляется в новый массив.
  4. Возвращается новый массив, оригинальный остается без изменений.

Метод 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]
  1. filter() проходит по каждому элементу массива.
  2. Для каждого элемента вызывает функцию и передает элемент и его индекс.
  3. Если функция возвращает true, элемент добавляется в новый массив; если false — пропускается.
  4. Возвращается новый массив с отобранными элементами, оригинальный остается неизменным.

Метод reduce() обрабатывает массив и сводит его к единственному значению (например, сумме элементов).

const result = originalArray.reduce((accumulator, currentValue) => {
    // Возвращаемое значение для следующей итерации
}, initialValue);

Пример:

const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, num) => acc + num, 0); // 10
  1. reduce() начинает с первого элемента массива (или с initialValue).
  2. Для каждого элемента (начиная со второго) вызывает функцию, передавая аккумулятор и текущий элемент.
  3. Функция возвращает новое значение аккумулятора для следующей итерации.
  4. После обработки всех элементов возвращается итоговое значение.

Итог

  • map() — для преобразования элементов.
  • filter() — для выбора элементов по условиям.
  • reduce*() — для сворачивания массива в одно значение.

Эти методы делают код более чистым и читаемым, избавляя от необходимости использовать циклы for

0 0
Пройдите курс по программированию бесплатно