Понимание метода уменьшения массива Javascript

Понимание метода уменьшения массива Javascript

20 октября 2022 г.

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

Это весьма полезно для суммирования массивов или объединения массивов на основе строк. Например, мы могли бы преобразовать массив в строку следующим образом:

Аналогичным образом мы могли бы использовать его для сложения всех чисел в массиве и возврата одного числа:

Функция обратного вызова метода сокращения

Функция обратного вызова, используемая в функции сокращения, фактически имеет 4 аргумента. Вам не обязательно использовать какие-либо из них, но обычно вам понадобятся первые два. Формат функции выглядит следующим образом:

Давайте посмотрим, что означают previousElement, currentElement, currentIndex, array и initialValue. .

предыдущийЭлемент

Это говорит само за себя. Он представляет предыдущий элемент из текущего, который мы итерируем. Функция reduce обычно начинается с индекса [1], так что предыдущий элемент существует. Если вы определили initialValue, то это значение будет использоваться, а функция reduce начнется с индекса [0], используя < code>initialValue как previousValue.

текущийэлемент

Это текущий элемент, который повторяется с помощью сокращения.

текущий индекс

Поскольку массивы состоят не только из индексов и часто содержат полезные данные, у нас также есть возможность получить текущий итерируемый индекс. Это вернет число с индексом 0, представляющее текущую позицию элемента в массиве. Ожидайте стандартные индексы массива от этого аргумента.

массив

Это вернет весь массив, что может быть полезно, если вы планируете манипулировать массивом с помощью reduce или если вы хотите выполнять вычисления на основе других элементов массива

начальное значение

Если указано, это будет previousElement для индекса [0].

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

Мутирование массива в уменьшении

Если вы попытаетесь изменить массив в reduce, это может привести к интересному поведению, поэтому есть несколько пограничных случаев, которые следует учитывать при рассмотрении reduce.

Например, если вы измените элемент массива где-то перед текущим элементом, сокращение все равно будет работать должным образом. Например, добавление 1000 к myArray[currentIndex + 1] по-прежнему будет давать ожидаемое значение:

Однако попытка добавить значения в массив во время выполнения reduce не сработает. Например, ниже я использую push, чтобы добавить один элемент в массив для каждого элемента в массиве. Это, конечно, привело бы к бесконечному циклу, поэтому Javascript останавливает функцию и обрабатывает только те значения, которые были в массиве на момент запуска reduce:

Примечание относительно массивов с одним значением

Если ваш массив содержит только одно значение и вы не используете initialValue, функция reduce вернет одно значение из этого массива, а не вызовет функцию обратного вызова. . Например:

Суммирование и объединение значений в массиве объектов

Возможно, вы уже ожидали такого поведения, но если у вас есть массив объектов, вы можете ссылаться на дочерние свойства каждого объекта-элемента для выполнения вычислений. Например, чтобы сложить все приведенные ниже age:

Возможно, вы заметили здесь несколько странных вещей, поэтому будет полезно поработать с этим примером:

Заключение

Метод reduce — это действительно полезный способ объединить все в массиве или создать новые массивы по вашему выбору. Он мощный и рекурсивный, поэтому будьте осторожны при его использовании с большими наборами данных.


Также опубликовано здесь


Оригинал