Eu queria saber se existe uma maneira de fazer algo como um foreach
loop PHP em JavaScript. A funcionalidade que estou procurando é algo como este trecho de código PHP:
foreach($data as $key => $value) { }
Eu estava olhando para o for..in
loop JS , mas parece não haver maneira de especificar o as
. Se eu fizer isso com um loop for 'normal' ( for(var i = 0; i < data.length; i++
), existe uma maneira de pegar os pares chave => valor?
fonte
Object.entries
chamada. Eu não fiz nenhum teste.hasOwnProperty
é usado para verificar se vocêtarget
realmente possui essa propriedade, em vez de herdá-la de seu protótipo. Um pouco mais simples seria:É apenas cheques que
k
não é um método (como setarget
éarray
que você vai ter um monte de métodos alertado, por exemploindexOf
,push
,pop
, etc.)fonte
Object.keys
.Object.keys(target).forEach(function (key) { target[key]; });
.target
for criado usandoObject.create(null)
, o código deve ser alteradotarget.hasOwnProperty(k)
->Object.prototype.hasOwnProperty.call(target,k)
k
,target
eproperty
? Para mim, não javascripter esta área de indefinido :)Ninguém mencionou,
Object.keys
então eu vou mencionar.fonte
for of
tc39wiki.calculist.org/es6/for-ofpois ... funcionará para você.
No JavaScript moderno, você também pode fazer isso:
fonte
A sintaxe php é apenas açúcar.
fonte
Suponho que você saiba que essa
i
é a chave e que você pode obter o valor viadata[i]
(e apenas deseja um atalho para isso).O ECMAScript5 introduziu
forEach
[MDN] para matrizes (parece que você tem uma matriz):A documentação do MDN fornece uma correção para os navegadores que não suportam.
Claro que isso não funciona para objetos, mas você pode criar uma função semelhante para eles:
Desde que você marcou a pergunta com jquery, o jQuery fornece
$.each
[docs] que circula as estruturas de array e de objeto.fonte
forEach
, não objetoforEach
.for each
sintaxe.for each (let val in myObj) console.log(val);
.Você pode usar o
for..in
para isso.fonte
Em javascript, todo objeto possui vários pares de valores-chave incorporados que possuem meta-informações. Quando você percorre todos os pares de valores-chave de um objeto, você também os percorre. O uso de hasOwnProperty () os filtra.
fonte
O ES6 fornecerá Map.prototype.forEach (callback), que pode ser usado assim
fonte
myMap
para?fonte
[['a', 1],['b',2],['c',3]]
. AforEach
desconstrói cada uma das matrizes de chave / valor e define as duas variáveis comokey
evalue
, para serem usadas como você deseja que a função in - seja exibida aquiconsole.log
.Você pode usar um loop 'for in' para isso:
fonte
Abaixo está um exemplo que chega o mais perto possível.
Se você estiver usando o jQuery, consulte: http://api.jquery.com/jQuery.each/
fonte
Se você estiver usando o Lodash , poderá usar
_.forEach
fonte
Nos últimos anos desde que essa pergunta foi feita, o Javascript adicionou alguns novos recursos. Um deles é o método Object.Entries .
Copiado diretamente do MDN é o seguinte trecho de código
fonte
sim, você pode ter matrizes associativas também em javascript:
fonte
fonte