web-dev-qa-db-ja.com

AS3-for(... in ...)vs for each(... in ...)

次のコードはまったく同じことを行います。 _for each_と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);
}
_
24
apscience

いいえ、彼らはまったく同じことをしますしません

For..inループの出力は

0
1
2

For each..inループの出力は

1
2
3

For..inループは、配列のkeys/indicesまたはオブジェクトのプロパティ名を反復処理します。 for each..inループはvaluesを反復します。 bar配列が次のように構成されているため、上記の結果が得られます。

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

ここで混乱するのは、配列で数値を使用していることです。文字列に切り替えて、何が起こるか見てみましょう。

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

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

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

今あなたの出力は:

0
1
2
x
y
z

ご覧のとおり、for-inindexes(またはキー)をループし、for-each-invaluesをループします。

13
Craig