У меня есть разреженный массив, содержимое которого не обязательно будет вставлено в порядке индекса, но его необходимо повторять в порядке индекса. Я понимаю, что для перебора разреженного массива вам нужно использовать оператор for..in.
Однако согласно этой статье:
Нет гарантии, что for...in вернет индексы в любом конкретном порядке.
Но подобные вопросы stackoverflow предполагают, что хотя порядок свойств объекта не гарантируется, массив заказы:
порядок свойств в объектах не гарантируется в 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>");
}
Кажется, что все соблюдают порядок индексов, так что могу ли я быть уверен, что так будет всегда? В противном случае, как мне лучше всего получить их в порядке индекса?
for..in
порядок гарантирован с массивами. (Я не говорю, что это не так, но эта строка на самом деле не говорит, что это так). Кроме того, есть очень веские причины чтобы избежать использованияfor..in
с массивами, даже если порядок работает нормально. - person JLRishe   schedule 22.12.2014idx
в вашей функцииaddItem
? - person Ash   schedule 19.09.2016