Как работает forEach в javascript

718
15 мая 2017, 00:37

Помогите понять как работает forEach в js. Былоб хорошо наглядный пример. Одна и таже задача решённая с применением "for" и "forEach" Спасибо

Отформатирую свой вопрос чтоб было более понятно. Спасибо за ответ тем кто ответил. Из-за чего возник вопрос. Я подумал как переписать это код используя forEach

 let length = 1;
    snake = [];
    for (let i = length - 1; i >= 0; i--) {
    }

И это оказалось совсем не так проосто как я думал. Поетому мне и нужен наглядный пример с forEach и for чтоб понять как работает. Буду благодарн

Answer 1

Метод 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(` ${i} : ${item} (массив: ${arr})`); 
});

Последняя задача через for :

let arr = ["1", "2", "3"]; 
 
for (let i = 0; i < arr.length; i++) { 
  alert((` ${i} : ${arr[i]} (массив: ${arr})`)); 
}

Answer 2

ForEach принимает функцию итератора, функция итератора вызывается для каждой записи в массиве.

var a = ["a", "b", "c"]; 
a.forEach(function(entry) { 
    console.log(entry); 
});

READ ALSO
Как написать расширение для Chrome меняющее исходный код страницы?

Как написать расширение для Chrome меняющее исходный код страницы?

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

354
Как проверить строку на пустоту

Как проверить строку на пустоту

Какой функцией можно проверить строку на пустоту?

475
Переключатель категорий на jquery

Переключатель категорий на jquery

На сайте имеется раздел новостейНовости можно показывать все, а можно включить отбор по дате (год, месяц) или категории

279