Je me demandais s'il y avait un moyen de faire quelque chose comme une foreach
boucle PHP en JavaScript. La fonctionnalité que je recherche est quelque chose comme cet extrait PHP:
foreach($data as $key => $value) { }
Je regardais la for..in
boucle JS , mais il semble qu'il n'y ait aucun moyen de spécifier le as
. Si je le fais avec une boucle normale pour loop ( for(var i = 0; i < data.length; i++
), existe-t-il un moyen de saisir les paires clé => valeur?
la source
Object.entries
appel. Je n'ai cependant effectué aucun test.hasOwnProperty
est utilisé pour vérifier si vous aveztarget
vraiment cette propriété, plutôt que de l'avoir héritée de son prototype. Un peu plus simple serait:Il vérifie seulement que
k
n'est pas une méthode (comme sitarget
estarray
vous obtenez beaucoup de méthodes alerté, par exempleindexOf
,push
,pop
, etc.)la source
Object.keys
.Object.keys(target).forEach(function (key) { target[key]; });
.target
est créé en utilisantObject.create(null)
, le code doit être changétarget.hasOwnProperty(k)
->Object.prototype.hasOwnProperty.call(target,k)
k
,target
etproperty
? Pour moi, non-javascripter cette zone indéfinie :)Personne n'a mentionné,
Object.keys
donc je vais le mentionner.la source
for of
ES6,car ... en travaillera pour vous.
En JavaScript moderne, vous pouvez également faire ceci:
la source
La syntaxe php est juste du sucre.
la source
Je suppose que vous savez que
i
c'est la clé et que vous pouvez obtenir la valeur viadata[i]
(et que vous voulez juste un raccourci pour cela).ECMAScript5 a introduit
forEach
[MDN] pour les tableaux (il semble que vous ayez un tableau):La documentation MDN fournit une cale pour les navigateurs qui ne la prennent pas en charge.
Bien sûr, cela ne fonctionne pas pour les objets, mais vous pouvez créer une fonction similaire pour eux:
Depuis que vous avez marqué la question avec jquery, jQuery fournit
$.each
[docs] qui fait une boucle sur les structures de tableau et d'objet.la source
forEach
, pas objetforEach
.for each
syntaxe.for each (let val in myObj) console.log(val);
.Vous pouvez utiliser le
for..in
pour cela.la source
En javascript, chaque objet a un tas de paires clé-valeur intégrées qui ont des méta-informations. Lorsque vous parcourez toutes les paires clé-valeur pour un objet, vous les parcourez également. L'utilisation de hasOwnProperty () les filtre.
la source
ES6 fournira Map.prototype.forEach (rappel) qui peut être utilisé comme ceci
la source
myMap
?la source
[['a', 1],['b',2],['c',3]]
. LeforEach
déconstruit chacun des tableaux clé / valeur et définit les deux variables surkey
etvalue
, à utiliser comme vous le souhaitez pour la fonction in - ici sortie dansconsole.log
.Vous pouvez utiliser une boucle 'for in' pour cela:
la source
Voici un exemple qui se rapproche le plus possible.
Si vous utilisez jQuery, voir: http://api.jquery.com/jQuery.each/
la source
Si vous utilisez Lodash , vous pouvez utiliser
_.forEach
la source
Au cours des dernières années depuis que cette question a été posée, Javascript a ajouté quelques nouvelles fonctionnalités. L'un d'eux est la méthode Object.Entries .
Copié directement à partir de MDN est l'extrait de code suivant
la source
oui, vous pouvez également avoir des tableaux associatifs en javascript:
la source
la source