В этой статье мы более подробно рассмотрим эти функции и некоторые связанные с ними примеры кода.

В JavaScript есть три популярных метода, которые мы обычно используем для преобразования данных: map, filter и reduce.

В этой статье мы более подробно рассмотрим эти функции и некоторые связанные с ними примеры кода.

.карта ( )

Метод map() принимает массив, перебирает его и на каждой итерации применяет функцию обратного вызова к текущему элементу массива. Функция отображает значения исходного массива в новый массив, поэтому она называется «карта».

Предположим, у нас есть массив банковских операций в долларах США, и мы хотим конвертировать их в евро.

const movements = [100, -50, 75, -15]

Во-первых, давайте сохраним коэффициент конверсии в отдельной переменной.

const usdToEur = 0.84;

Теперь мы можем вызвать метод map() для массива movements. Этому методу нужна функция обратного вызова, которая получает в качестве аргумента текущий элемент массива, в данном случае mov. В функции обратного вызова мы возвращаем каждый элемент исходного массива, умноженный на коэффициент конверсии. Это создаст новый массив, в котором каждое движение будет конвертировано в евро.

Чтобы упростить эту функцию, мы можем заменить функцию обратного вызова стрелочной функцией:

const movementsEur = movements.map(mov => mov * usdToEur);

Метод map(), помимо текущего элемента, также получает доступ к текущему индексу, а также ко всему массиву.

Например, мы можем создать новый массив с описанием для каждого движения, указав положение движения, его значение и то, является ли оно депозитом (mov > 0) или снятием (mov < 0).

.filter ()

Метод filter(), как следует из названия, используется для фильтрации элементов в исходном массиве, которые удовлетворяют определенному условию, указанному в функции обратного вызова.

Возвращаясь к нашему примеру движения банка, предположим, что мы хотим создать массив со всеми депозитами, следовательно, со всеми движениями больше нуля. Только элементы массива, для которых выполняется это условие, будут частью нового массива депозитов, а остальные будут отфильтрованы.

Как и раньше, мы можем заменить функцию обратного вызова стрелочной функцией:

const deposits= movements.filter(mov => mov > 0);

.уменьшать ( )

Метод reduce() используется для сведения (уменьшения) всех элементов в массиве к одному элементу. Примером этого может быть сложение всех элементов массива вместе.

В нашем примере мы можем создать функцию для расчета глобального баланса учетной записи, суммируя как депозиты, так и снятие средств.

Как и другие методы, функция reduce() также получает функцию обратного вызова, но в этом первом параметре называется аккумулятор, а вторым - текущий элемент.

По мере того, как метод reduce() проходит по массиву, он продолжает добавлять текущий элемент в аккумулятор, пока в конце цикла у нас не будет общая сумма всех элементов.

Важно отметить, что функция обратного вызова является первым аргументом метода reduce(), что она также принимает второй аргумент, который является начальным значением аккумулятора, в примере 0.

С функцией стрелки:

const balance = movements.reduce((acc, curr) => acc + curr, 0);

Не стесняйтесь сообщить мне в комментариях, как вы будете использовать эти три метода JavaScript!

Больше контента на plainenglish.io