13

for-each ループと for-in ループの両方について、AS3 の配列、ディクショナリ、およびオブジェクト型の反復順序を知りたいです。また、これらのループ タイプの組み合わせの反復順序を変更できる要因は何ですか?

たとえば、配列型で for-each を使用すると、常に最初の要素から最後の要素に移動すると思います。For-each は Dictionary では使用できないため、for-in ループを使用して順序を決定するにはどうすればよいでしょうか?

4

3 に答える 3

8

Colin Moock による Essential Actionscript 3.0 で述べられているように、for each in ループの順序は、XML または XMLList オブジェクトを列挙しない限り保証されません。

コリン・ムックの本からの言葉はここをクリックしてください。

hereで説明されているように回避策がありますが、正直なところ、順序を保証する必要がある場合は、通常の古い for ループを使用して、繰り返し (長さ、numChildren など) の回数を実行します。

于 2009-03-07T00:34:17.090 に答える
2

AS3.0 で変更された評価の順序 以前の AS 1.0 および 2.0 では、評価の順序はオブジェクトが追加された順序に基づいていました。3.0 では、すべてのループで配列の順序が維持されます。スニペットを試してください:

var a:Array = new Array();
a[ 1 ] = 'first';
a[ 0 ] = 'second';

for (var key:String in a) 
    trace( key + ': ' + a[ key ] );

AS3.0 と AS1.0/2.0 で上記を試す

于 2009-03-06T16:27:00.177 に答える