0

Firefox では、JS オブジェクトの列挙に一貫性がないようです。

コード:

var a = {"3":"a", "2":"b", "foo":"c", "1":"d"};

var str = "";
for(var n in a) { str += n + " = " + a[n] + "\n"; }
alert(str);

Windows での FF22 の結果:

1 = d
2 = b
3 = a
foo = c

期待される結果 (および Linux 上の FF20 で得られるもの):

3 = a
2 = b
foo = c
1 = d

要素を挿入したときと同じ順序に保つにはどうすればよいですか?

ECMA の仕様では、列挙を行う方法が規定されていないため、バグとは言えません。しかし、挿入された順序で要素が必要です。(理由: サーバー側で順序付けされた JSON でエンコードされたハッシュ テーブルを取得します。最近まで順序が維持されていましたが、キーによって順序付けられているため、リスト全体が混乱しています)

4

1 に答える 1