コンテンツがインデックス順に挿入されるとは限らないが、インデックス順に反復処理する必要があるスパース配列があります。スパース配列を反復処理するには、for..in ステートメントを使用する必要があることを理解しています。
ただし、この記事によると:
for...in が特定の順序でインデックスを返すという保証はありません
しかし、このようなスタックオーバーフローの質問は、オブジェクト プロパティの順序は保証されていませんが、配列の順序は次のとおりであることを示唆しています。
オブジェクト内のプロパティの順序は JavaScript では保証されないため、配列を使用する必要があります。
Chrome、Firefox、IE の最新バージョンでこれをテストしました。
<ol id="items"></ol>
var list = [];
function addItem(index) {
list[index] = { idx : index };
}
var insertOrder = [ 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15 ];
for ( var i = 0; i < 15; i++ ) {
addItem(insertOrder[i]);
}
for(var item in list) {
$("#items").append("<li>" + list[item].idx + "</li>");
}
すべてがインデックスの順序を尊重しているように見えるので、これが常に当てはまると信頼できますか? それ以外の場合、どのようにインデックス順に取得するのが最善ですか?