Отказ от ответственности: в этой статье предполагается, что читатель имеет некоторое представление о ES6.

Массивы - это объекты в JavaScript, подобные спискам, и возможность манипулировать ими - жизненно важный навык, которым должен обладать любой программист JavaScript. У массивов есть несколько итерационных методов, но мы бы рассмотрели следующие шесть:

  • Array.prototype.forEach ()
  • Array.prototype.map ()
  • Array.prototype.reduce ()
  • Array.prototype.filter ()
  • Array.prototype.some ()
  • Array.prototype.every ()

Array.prototype.forEach ()

Этот метод выполняет функцию один раз для каждого элемента, присутствующего в массиве. Он принимает функцию обратного вызова, которая принимает три (3) параметра:

  • currentValue: элемент обрабатываемого массива
  • index (необязательно): индекс элемента в массиве
  • array (необязательно): обрабатываемый массив

Документация MDN для forEach ()

Array.prototype.map ()

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

Документация MDN для .map ()

Array.prototype.reduce ()

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

  • аккумулятор: накапливает и сохраняет возвращаемое значение обратного вызова. Текущее значение аккумулятора - это накопленное значение, возвращенное в последнем обратном вызове, или initialValue, если оно предоставлено. См. MDN reduce для более подробной информации.
  • currentValue: элемент обрабатывается в данный момент
  • index (необязательно): индекс обрабатываемого элемента
  • array (необязательно): обрабатываемый массив

Метод reduce также принимает дополнительный параметр initialValue, который указывает начальную точку для аккумулятора.

Документация MDN для .reduce ()

Array.prototype.filter ()

По мере применения имени метод фильтрует массив на основе обратного вызова и возвращает отфильтрованный массив, состоящий из элементов, прошедших тест в обратном вызове. Он принимает те же параметры, что и map и forEach.

Документация MDN для .filter ()

Array.prototype.some ()

.some () проверяет, соответствует ли какой-либо элемент в массиве указанному условию, и возвращает результирующее логическое значение. Этот метод продолжает вызывать предоставленную функцию обратного вызова для каждого элемента до тех пор, пока элемент не удовлетворяет условию, затем он возвращает true, иначе он возвращает false. Его параметры аналогичны параметрам функций map, forEach и filter.

Документация MDN для .some ()

Приведенный ниже код проверяет, содержит ли массив какое-либо нечетное число.

Array.prototype.every ()

Этот метод ведет себя так же, как метод .some (), но проверяет условие для каждого элемента в массиве, то есть возвращает false, если один элемент не соответствует предоставленному условию. Используя .every () для приведенного выше примера, чтобы проверить, есть ли в массиве только четные числа, мы получим false, потому что на самом деле в массиве есть два нечетных числа.

Документация MDN для .every ()

Однако приведенный выше код вернет истину, если myEvenNumbers был массивом только четных чисел.

Резюме

У массивов JavaScript есть несколько методов итераций, которые упрощают выполнение сложных перестановок. Эти методы можно объединить в цепочку для достижения желаемого результата. Перейдите в MDN, чтобы получить больше информации о многочисленных методах работы с массивами, возможных приложениях и их совместимости с браузерами.