JavaScript метод forEach()

JavaScript Array

Определение и применение

JavaScript метод forEach() позволяет выполнить переданную функцию один раз для каждого элемента в массиве в порядке возрастания индекса.


Обращаю Ваше внимание, что функция обратного вызова, переданная в качестве параметра метода forEach() не будет вызвана для удалённых, или пропущенных элементов массива.


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

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

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
forEach()ДаДаДаДа9.0Да

JavaScript синтаксис:

// только с callback функцией
array.forEach( function( currentValue, index, arr ) ); 

// с использованием объекта, на который может ссылаться ключевое слово this
array.forEach( function( currentValue, index, arr ), thisValue ); 

Версия JavaScript

ECMAScript 5.1 (Реализовано в JavaScript 1.6)

Значения параметров

ПараметрОписание
function Функция обратного вызова, которая будет выполнена один раз для каждого элемента в массиве. Функция принимает следующие параметры:
  • currentValue - значение текущего элемента
  • index - индекс массива текущего элемента.
  • arr - массив, к которому принадлежит текущий элемент (по которому происходит проход).

Если в качестве параметра метода передается что-то, что не является объектом функции, то будет вызвано исключение TypeError. Обязательный параметр.

thisValueОбъект, на который может ссылаться ключевое слово this внутри функции обратного вызова. Если параметр thisValue не используется, то в качестве значения this будет использоваться undefined (в конечном счете this будет зависеть от обычных правил контекста выполнения функции). Необязательный параметр.

Пример использования

В следующем примере мы рассмотрим как получить сумму всех элементов массива с использованием JavaScript метода forEach():

var array = [10, 20, 30]; // инициализируем переменную, содержащую массив числовых значений 
var sum = 0; // инициализируем переменную, содержащую числовое значение 

array.forEach( // перебираем все элементы массива array
  function sumNumber( currentValue ) {
    sum += currentValue;
  }
);

console.log( sum ); // выводим значение переменной sum равное 50

В следующем примере мы рассмотрим использование второго аргумента метода forEach(), который указывает на объект, на который мы можем ссылаться с использованием ключевого слова this внутри функции обратного вызова:

var numbers = [2, 3, 4]; // инициализируем переменную, содержащую массив числовых значений 
var squared = []; // инициализируем переменную, содержащую пустой массив  
var myObject = { // инициализируем переменную, содержащую объект 
  square: function( currentValue ) { // метод объекта, который принимает значение  
    return currentValue * currentValue; // и возвращает его возведенным в квадрат 
  }
};

numbers.forEach( // перебираем все элементы массива numbers
  function( currentValue ) {
    squared.push( this.square( currentValue ) ); // добавляем в массив squared возвращаемое значение метода square объекта myObject
  }, myObject // объект, на который мы ссылаемся с использованием ключевого слова this 
);

console.log( squared ); // выводим значение переменной squared равное [4, 9, 16];
JavaScript Array