Question AS3 - pour (... en ...) vs pour chacun (... en ...)


Le code suivant fait exactement la même chose. Y a-t-il une différence entre for each et for (... in ...)?

var bar:Array = new Array(1,2,3);    

for (var foo in bar){
    trace(foo);
}

for each (var foo2 in bar){
    trace(foo2);
}

23
2017-08-21 10:03


origine


Réponses:


Non, ils font ne pas faire exactement la même chose.

La sortie de votre boucle for..in est

0
1
2

Alors que la sortie de votre pour chacun..en boucle est

1
2
3

Une boucle for..in parcourt le clés / indices d'un tableau ou noms de propriétés d'un objet. Un pour chaque..in boucle itère à travers le valeurs. Vous obtenez les résultats ci-dessus parce que votre bar tableau est structuré comme ceci:

bar[0] = 1;
bar[1] = 2;
bar[2] = 3;

69
2017-08-21 10:44



Une partie de la confusion est que vous utilisez des nombres dans votre tableau. Passons aux chaînes et voyons ce qui se passe.

var bar:Array = new Array("x", "y", "z");    

for (var foo in bar){
    trace(foo);
}

for each (var foo2 in bar){
    trace(foo2);
}

Maintenant, votre sortie est la suivante:

0
1
2
x
y
z

Comme vous pouvez le voir, for-in boucles sur index (ou des clés), et pour chacun boucles sur valeurs.


9
2018-04-20 03:54