Или по-другому как перебрать все элементы массива в Javascript?
Что-то вроде foreach(array as value)
Ответ
Есть несколько вариантов, в зависимости от ваших задач.
Начнём с простого:
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, не требующий дополнительных проверок как в примере выше. Принципиальные же отличия в деталях можно узнать из предложения (англ.).
Подробнее:
https://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript (англ.) — очень подробный ответ на вопрос с детальным рассмотрением всех возможных вариантов
http://habrahabr.ru/post/247857/ (рус.) — дословный перевод вышеназванного ответа на русский язык
Комментариев нет:
Отправить комментарий