Аналог функции foreach для javascript

Рейтинг: 3Ответов: 1Опубликовано: 07.04.2015

Или по-другому как перебрать все элементы массива в Javascript?

Что-то вроде foreach(array as value)

Ответы

▲ 14Принят

Есть несколько вариантов, в зависимости от ваших задач.

Начнём с простого:

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

Немного более старомодный вариант:

var index;
var a = ["a", "b", "c"];
for (index = 0; index < a.length; ++index) {
    console.log(a[index]);
}

Кроме того, есть собственно for-in. Может использоваться, например, для разреженных (sparsed) массивов:

Примитивный, но не совсем верный вариант:

for (var key in data) {
  key;//ключ
  data[key];//значение
}

Более правильно:

var key;
var a = [];
a[0] = "a";
a[10] = "b";
a[10000] = "c";
for (key in a) {
    if (a.hasOwnProperty(key)  &&
        /^0$|^[1-9]\d*$/.test(key) &&
        key <= 4294967294
        ) {
        console.log(a[key]);
    }
}

В EcmaScript6 в виде предложения (draft) добавлена ещё конструкция for-of:

var val;
var a = ["a", "b", "c"];
for (val of a) {
    console.log(val);
}

Собственно, по большому счёту, for-of это просто правильный for-in, не требующий дополнительных проверок как в примере выше. Принципиальные же отличия в деталях можно узнать из предложения (англ.).

Подробнее: