Метод forEach
Метод forEach позволяет последовательно перебрать все элементы массива. Метод в параметре получает функцию, которая выполнится для каждого элемента массива.
В эту функцию можно передавать три параметра. Если эти параметры есть (они не обязательны), то в первый автоматически попадет элемент массива, во второй попадет его номер в массиве (индекс), а в третий — сам массив.
Синтаксис
массив.forEach(function(элемент, индекс, массив) < код, который выполнится для всех элементов >);
Пример
Давайте выведем элементы массива в консоль:
let arr = [1, 2, 3, 4, 5]; arr.forEach(function(elem) < console.log(elem); >);
Пример
Давайте выведем элементы и их номера в консоль:
let arr = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]; arr.forEach(function(elem, ind) < console.log(elem, ind); >);
Пример
Давайте найдем сумму элементов массива:
let arr = [1, 2, 3, 4, 5]; let sum = 0; arr.forEach(function(elem) < sum += elem; >); console.log(sum);
Результат выполнения кода:
Смотрите также
- метод map ,
который также позволяет применить функцию к каждому элементу массива - метод filter ,
который позволяет фильтровать элементы массива - методы some и every ,
выполняющие проверку массива - методы reduce и reduceRight ,
сворачивающие массив к одному значению
forEach() JS — метод для перебора массива
Метод forEach() в языке JS используется для прохода всех элементов массива. Данный цикл работает так — он перебирает каждый элемент и выполняет переданную ему функцию для каждого элемента.
Теперь давайте рассмотрим параметры, которые данный метод принимает
array.forEach(function callback(currentValue, index, currentArray)[, thisArg]);
callback — та самая функция, которая будет вызвана для каждого элемента при выполнении цикла forEach
Callback может быть стрелочной функцией и принимает такие параметры
- currentValue — значение текущего элемента массива
- index — порядковый номер элемента (начиная с 0)
- currentArray — массив, который мы перебираем
thisArg — это необязательный параметр. Значение, используемое в качестве this при вызове функции callback .
Примеры использования
Самый простой пример:
let arr = ["John", "Mike", "Andry", "Shenon"]; arr.forEach((item, index) => < // item - элемент массива на текущей итерации // index - порядковый номер элемента в массиве console.log(`$: $`); >)
-
, к которому вам нужно из массива добавить данные:
Итак, сначала мы с DOM дерева вытягиваем список ul, чтобы потом к нему добавить каждый элемент li. Задаем переменную, к которой добавим пункты списка. С помощью метода forEach() проходим по нашему массиву и добавляем всё к li. Затем с помощью .innerHTML добавляем это к полученному ul.
Полный код с html смотрите тут:
Теперь рассмотрим пример, когда у нас есть массив и нам нужно заменить какое-то значение при условии. Например, в массиве из примера выше, нам нужно заменить Toyota на Lexus:
let arr = ['BMW', 'Mercedes', 'Volkswagen', 'Toyota']; arr.forEach((item, index) => < if (item === 'Toyota') < arr[index] = 'Lexus'; // Выбираем нужный элемент массива по его индексу и присваиваем ему новое значение >>) console.log(arr); // ['BMW', 'Mercedes', 'Volkswagen', 'Lexus']
Пишем свой forEach с помощью цикла
В JS метод forEach сделан для удобства, но мы также можем пройтись по массиву используя обычный цикл for.
let arr = [‘Mike’, ‘Ray’, ‘Liam’, ‘Mason’, ‘Jacob’]; for (let i = 0; i
Перебор массива объектов
Скорее всего на практике вам чаще всего придется делать перебор массива объектов, чтобы вывести какие-либо данные, изменить свойства объекта или добавить что-либо к объекту.
Давайте рассмотрим такие примеры.
Пример 1. У нас есть ответ от сервера с именами и возрастом пользователей. Нам нужно вывести данные только тех пользователей, которые старше 18
let users = [ < name: 'Steve', age: 18 >, < name: 'John', age: 12 >, < name: 'Liam', age: 16 >, < name: 'Mike', age: 20 >, < name: 'Jacob', age: 21 >] users.forEach(user => < if (user.age >= 18) console.log(user.name); >);
В данном случае на каждой итерации в переменную user мы получаем объект. Мы знаем, что у него есть свойство age и с помощью if мы проверяем соответствует ли возраст пользователя нашему условию (18 лет). Если да, тогда выводим имя в консоль.
Пример 2. Давайте добавим всем пользователям свойство city.
let users = [ < name: 'Steve', age: 18 >, < name: 'John', age: 12 >, < name: 'Liam', age: 16 >, < name: 'Mike', age: 20 >, < name: 'Jacob', age: 21 >] users.forEach(user => < user.city = 'New York'; >);
Как работает forEach в javascript
Помогите понять как работает forEach в js. Былоб хорошо наглядный пример. Одна и таже задача решённая с применением «for» и «forEach» Спасибо Отформатирую свой вопрос чтоб было более понятно. Спасибо за ответ тем кто ответил. Из-за чего возник вопрос. Я подумал как переписать это код используя forEach
let length = 1; snake = []; for (let i = length - 1; i >= 0; i--)
И это оказалось совсем не так проосто как я думал. Поетому мне и нужен наглядный пример с forEach и for чтоб понять как работает. Буду благодарн
Отслеживать
задан 13 мая 2017 в 9:01
488 1 1 золотой знак 5 5 серебряных знаков 16 16 бронзовых знаков
13 мая 2017 в 9:04
forEach всегда обходит коллекцию начиная с начала. В твоем примере, ты обходишь коллекцию с конца, следовательно данное поведение нельзя реализовать с помощью forEach напрямую
13 мая 2017 в 11:29
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Метод forEach() выполняет указанную функцию один раз для каждого элемента в массиве.
arr.forEach(callback[, thisArg])
callback -
Функция, создающая элемент нового массива, принимает три аргумента:
currentValue
Текущий обрабатываемый элемент в массиве.
index
Индекс текущего обрабатываемого элемента в массиве.
array
Массив, по которому осуществляется проход.
thisArg
Необязательный параметр. Значение, используемое в качестве this при вызове функции callback .
Метод forEach() выполняет функцию callback один раз для каждого элемента, находящегося в массиве в порядке возрастания. Она не будет вызвана для удалённых или пропущенных элементов массива. Однако, она будет вызвана для элементов, которые присутствуют в массиве и имеют значение undefined .
Функция callback будет вызвана с тремя аргументами:
значение элемента ( value ) индекс элемента ( index ) массив, по которому осуществляется проход ( array ) Если в метод forEach() был передан параметр thisArg , при вызове callback он будет использоваться в качестве значения this . В противном случае, в качестве значения this будет использоваться значение undefined . В конечном итоге, значение this , наблюдаемое из функции callback , определяется согласно обычным правилам определения this , видимого из функции.
Диапазон элементов, обрабатываемых методом forEach() , устанавливается до первого вызова функции callback . Элементы, добавленные в массив после начала выполнения метода forEach() , не будут посещены функцией callback . Если существующие элементы массива изменятся, значения, переданные в функцию callback , будут значениями на тот момент времени, когда метод forEach() посетит их; удалённые элементы посещены не будут.
function logArrayElements(element, index, array) < console.log('a[' + index + '] = ' + element); >// Обратите внимание на пропуск по индексу 2, там нет элемента, поэтому он не посещается [2, 5, , 9].forEach(logArrayElements); // логи: // a[0] = 2 // a[1] = 5 // a[3] = 9
let arr = ["1", "2", "3"]; arr.forEach(function(item, i, arr) < alert(` $: $ (массив: $)`); >);
Что такое JavaScript forEach и для чего используется
В языке программирования JavaScript есть несколько способов перебрать массивы данных. Одним из наиболее распространенных стал метод forEach(), который позволяет поочередно получить доступ к каждому элементу и при необходимости изменить его. Используя его, вы сможете написать более лаконичный и чистый код, чем с применением простого цикла for.
Что такое JavaScript forEach
Это метод, перебирающие массивы с любыми типами данных. Он выполняет предоставленную функцию один раз для каждого элемента в порядке увеличения индекса объекта. forEach называют функцией обратного вызова (коллбэком).
Метод forEach используют, если проект работает на основе ECMAScript 5 или более новой версии языка программирования. Стоит отметить, что 4-ое поколение JS уже не используется даже в любительской разработке.
Пример применения метода:
var a = ["a", "b", "c"]; a.forEach(function(entry) < console.log(entry); >);

Преимуществом метода разработчики называют то, что не требуется объявление переменных для хранения индекса и значения актуального элемента массива. Эта информация автоматически перенаправляется в функцию обратного вызова как аргумент.
Как и другие способы работы с массивами, forEach — не единственный вариант. JavaScript -программисты для перебора массивов также используют:
- every — проверяет, удовлетворяют ли все элементы массива условию, заданному в коллбэке. Метод every возвращает true, если функция проверки возвращает истинноподобное (truthy) значение для каждого элемента массива, и false в противном случае;
- some — аналогичен предыдущему методу, но возвращает true, если функция проверки возвращает truthy хотя бы для одного элемента массива;
- filter — создает новый массив, в который входят все элементы массива, прошедшие проверку в коллбэк-функции;
- reduce — сводит массив к одному общему значению, применяя коллбэк по очереди ко всем элементам. Этот вариант используют, например, для вычисления суммы элементов.
Это неполный перечень методов работы с массивами в JS. Выбирая подходящий способ перебора массива, нужно опираться на требуемый функционал, сложность задачи и т. д.
Остались вопросы?
Укажите ваши данные, и мы вам перезвоним
Для чего используется
В JavaScript метод forEach() позволяет выполнить функцию обратного вызова по разу для всех элементов в массиве по порядку. Стоит отметить, что он не работает для удаленных и пропущенных объектов.
Синтаксис
Чтобы разобраться в особенностях синтаксиса этого метода, рассмотрим 4 простых примера:
array.forEach((currentElement) => < /* . */ >) array.forEach(function(currentElement) < /* . */ >)
array.forEach((currentElement, index) => < /* . */ >) array.forEach(function(currentElement, index) < /* . */ >)
array.forEach((currentElement, index, array) => < /* . */ >) array.forEach(function(currentElement, index, array)< /* . */ >)
array.forEach((currentElement, index, array) => < /* . */ >, thisValue) array.forEach(function(currentElement, index, array) < /* . */ >, thisValue)
На них представлены основные варианты написания этого метода. В зависимости от того что программист хочет использовать, он введет следующие параметры:
- callbackFunction — это функция обратного вызова, которая выполняется один раз для каждого элемента списка;
- currentElement — обязательный аргумент, который является актуальным элементом массива, обрабатываемым во время итерации;
- index — необязательный параметр, содержащий порядковый номер текущего элемента;
- array — массив, по которому forEach осуществляет проход (необязательный параметр);
- thisValue — определяет значение, используемое в качестве this при вызове коллбэка.
Остались вопросы?
Укажите ваши данные, и мы вам перезвоним
Примеры применения
Функция forEach может использоваться для разных задач, включая самые простые. Новичкам стоит сначала освоить сложение и умножение. Чтобы посчитать сумму чисел в массиве, нужно написать:
let sum = 0; const numbers = [65, 44, 12, 4]; numbers.forEach(myFunction); function myFunction(item)
А для умножения элементов:
const numbers = [65, 44, 12, 4]; numbers.forEach(myFunction) function myFunction(item, index, arr)
Следующий пример показывает, как обновить свойства объекта в каждой записи:
class Counter < constructor() < this.sum = 0; this.count = 0; >add(array) < // Only function expressions will have its own this binding array.forEach(function countEntry(entry) < this.sum += entry; ++this.count; >, this); > > const obj = new Counter(); obj.add([2, 5, 9]); console.log(obj.count); // 3 console.log(obj.sum); // 16
Вывод
forEach — удобный способ перебрать все элементы массива. Его первым аргументом становится функция обратного вызова, а другими — currentElement, index, array. Метод будет полезен для обработки данных без разрыва и с одновременным использованием побочных эффектов.
Метод forEach также позволяет написать более чистый и читабельный код, чем при использовании циклов for.
Комплексное обучение JavaScript
Курс рассчитан на веб-разработчиков с опытом от 1 года или на тех, кто уже прошел наш курс «Веб-разработка для начинающих»