Страницы

Поиск по вопросам

понедельник, 1 апреля 2019 г.

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

Или по-другому как перебрать все элементы массива в 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/ (рус.) — дословный перевод вышеназванного ответа на русский язык

Комментариев нет:

Отправить комментарий