Мне было интересно, есть ли способ сделать что-то вроде foreach
цикла PHP в JavaScript. Функциональность, которую я ищу, выглядит примерно так: PHP Snippet:
foreach($data as $key => $value) { }
Я смотрел на for..in
цикл JS , но, похоже, нет способа указать as
. Если я сделаю это с «нормальным» для цикла ( for(var i = 0; i < data.length; i++
), есть ли способ получить пары ключ => значение?
источник
Object.entries
вызова. Я не проводил никаких тестов, хотя.hasOwnProperty
используется, чтобы проверить,target
действительно ли у вас есть это свойство, а не унаследовано от его прототипа. Немного проще было бы:Он просто проверяет , что
k
это не метод (как будтоtarget
этоarray
вы получите много способов оповещения, напримерindexOf
,push
,pop
и т.д.) .источник
Object.keys
.Object.keys(target).forEach(function (key) { target[key]; });
,target
создан с использованиемObject.create(null)
, код должен быть измененtarget.hasOwnProperty(k)
->Object.prototype.hasOwnProperty.call(target,k)
k
,target
аproperty
? Для меня не javascripter эта область неопределена :)Никто не упомянул,
Object.keys
поэтому я упомяну это.источник
for of
ES6,для ... в будет работать для вас.
В современном JavaScript вы также можете сделать это:
источник
Синтаксис PHP просто сахар.
источник
Я предполагаю, что вы знаете, что
i
это ключ и что вы можете получить значение черезdata[i]
(и просто хотите ярлык для этого).ECMAScript5 представил
forEach
[MDN] для массивов (кажется, у вас есть массив):Документация по MDN предоставляет оболочку для браузеров, которые ее не поддерживают.
Конечно, это не работает для объектов, но вы можете создать аналогичную функцию для них:
Поскольку вы пометили вопрос JQueryjQuery предоставляет
$.each
[docs], который перебирает структуры массива и объекта.источник
forEach
, а не объектforEach
.for each
синтаксис.for each (let val in myObj) console.log(val);
,Вы можете использовать
for..in
для этого.источник
В javascript каждый объект имеет набор встроенных пар ключ-значение, которые имеют метаинформацию. Когда вы перебираете все пары ключ-значение для объекта, вы также перебираете их. Использование hasOwnProperty () отфильтровывает их.
источник
ES6 предоставит Map.prototype.forEach (callback), который можно использовать следующим образом
источник
myMap
?источник
[['a', 1],['b',2],['c',3]]
.forEach
Разбирает каждое из ключевых значений массивов / и устанавливает две переменныеkey
иvalue
, чтобы использовать , как вы хотите , чтобы функция - здесь выход вconsole.log
.Вы можете использовать цикл for для этого:
источник
Ниже приведен пример, который подходит как можно ближе.
Если вы используете jQuery, смотрите: http://api.jquery.com/jQuery.each/
источник
Если вы используете Lodash , вы можете использовать
_.forEach
источник
За последние несколько лет, с тех пор как был задан этот вопрос, Javascript добавил несколько новых функций. Одним из них является метод Object.Entries .
Скопирован непосредственно из MDN, следующий фрагмент кода
источник
да, вы можете иметь ассоциативные массивы также в javascript:
источник
источник