Ich habe ein Sparse-Array, dessen Inhalt nicht garantiert in die Indexreihenfolge eingefügt wird, sondern in der Indexreihenfolge durchlaufen werden muss. Um ein Sparse-Array zu durchlaufen, verstehe ich, dass Sie eine for..in-Anweisung verwenden müssen.Wie soll ich ein Sparse-Array in Indexreihenfolge durchlaufen?
Doch nach this article:
Es gibt keine Garantie dafür, dass für ... in werden die Indizes in einer bestimmten Reihenfolge
Aber stackoverflow questions like this legen nahe, dass während Objekteigenschaft eine Rückkehr nicht garantiert, Array-Bestellungen sind:
Eigenschaften Reihenfolge in Objekten sind nicht garantiert in JavaScript, müssen Sie ein Arra verwenden y.
I tested this in den neuesten Versionen von Chrome, Firefox und 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>");
}
erscheinen alle so den Index, um zu ehren kann ich vertrauen, dies immer der Fall zu sein? Ansonsten, wie bekomme ich sie am besten in Indexreihenfolge?
würde ich nicht nehmen Diese Zeile, die Sie angegeben haben, ist ein Hinweis darauf, dass 'for..in' mit Arrays garantiert ist. (Ich sage nicht, dass es nicht ist, aber diese Zeile sagt nicht wirklich, dass es ist). Außerdem gibt es [sehr gute Gründe] (http://stackoverflow.com/questions/500504/why-isusing-for-in-in-array-iteration-such-a-bad-idea), um die Verwendung von 'zu vermeiden for..in' mit Arrays, auch wenn die Reihenfolge ok ist. – JLRishe
Sie können die Unterschiede hier sehen: http://jsfiddle.net/abhitalks/rfe33uxf/ – Abhitalks
c.f. [diese Antwort] (http://stackoverflow.com/a/4261096/1945651): _ "Auch die Reihenfolge der Iteration ist nicht durch die Spezifikation garantiert, was bedeutet, dass, wenn Sie ein Array-Objekt mit" iterieren "möchten Mit dieser Anweisung können Sie nicht sicher sein, dass die Eigenschaften (Array-Indizes) in der numerischen Reihenfolge aufgerufen werden. "_ – JLRishe