我有一个稀疏数组,其内容没有保证按索引顺序插入,但需要按索引顺序进行迭代。我了解要想遍历稀疏数组,需要使用for..in语句。然而,根据这篇文章的说法:
但是像这样的stackoverflow问题表明,虽然对象属性顺序不能保证,但数组顺序可以:不能保证for...in会以任何特定的顺序返回索引。
我在最新版本的Chrome、Firefox和IE中进行了测试。JavaScript中对象的属性顺序不能保证,需要使用Array。
<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>");
}
所有的内容似乎都按照索引顺序排序,那我能一直信任这种情况吗?否则,我应该如何最好地让它们按照索引顺序排列?
for..in
循环在数组中保证顺序的指示。(我并不是说它不保证,但那行代码并没有真正说明它保证了)。此外,即使顺序没问题,也有非常好的理由避免使用for..in
循环来迭代数组。 - JLRisheaddItem
中,idx
是在哪里定义的? - Ash