forEach ne fonctionne pas lorsque la boucle for avec un tableau d'objets
J'ai un tableau comme
var updates = [];
J'ai ensuite ajouter des trucs au tableau comme ceci
updates["func1"] = function () { x += 5 };
Quand j'ai appeler les fonctions avec une boucle for, il fonctionne comme prévu
for(var update in updates) {
updates[update]();
}
Mais quand j'utilise le forEach, il ne fonctionne pas!?
updates.forEach(function (update) {
update();
});
forEach fonctionne bien dans mon navigateur est google chrome, ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
forEach itère sur
indexes
pas plus deproperties
. Votre code:Ajoute une propriété à un objet – qui, d'ailleurs, est un tableau – n'est pas un élément dans un tableau.
En fait, c'est équivalent à:
Si vous besoin de quelque chose comme une table de hachage, alors vous pouvez utiliser un objet ordinaire à la place:
Et ensuite effectuer une itération à l'aide de
for…in
, que ne devrait pas être utilisé sur les tableauxOu vous pouvez utiliser Objet.touches pour récupérer les propriétés d'une itération sur eux:
for...in
c'est pourquoi j'ai posé la question, donc merci pour l'alternative àfor...in
🙂Vous n'êtes pas d'ajouter les éléments dans le tableau, vous ajoutez les propriétés de l'objet de votre objet array.
for .. in
sera de retour toutes les propriétés,forEach
seulement itère sur les éléments du tableau.À ajouter à l'éventail, vous voulez faire cela:
Si vous avez l'intention d'ajouter dans la façon dont vous êtes, alors il suffit d'utiliser un objet et non pas un tableau:
et ensuite utiliser
for ... in
.