我混淆約陣列爲什麼我的對象在for循環中從last到first?
我的數據是
和我的for循環
和我的結果是
數據打印是
segment5 segment4 段3 分段2 SEGMENT1
謝謝
我混淆約陣列爲什麼我的對象在for循環中從last到first?
我的數據是
和我的for循環
和我的結果是
數據打印是
segment5 segment4 段3 分段2 SEGMENT1
謝謝
對象屬性的列舉並不按字母順序排列。其實它是left to implementations to decide。
大多數瀏覽器按照屬性創建IIRC的順序執行。
如果您需要訂購,請使用Array
,Map
或Set
。
最後,在ES2015中,可以通過定義自己的迭代函數來創建一個可迭代的對象,該函數可以具有任何所需的順序或枚舉。
var obj = {
foo: '1',
bar: '2',
bam: '3',
bat: '4',
};
obj[Symbol.iterator] = iter.bind(null, obj);
function* iter(o) {
var keys = Object.keys(o);
for (var i=0; i<keys.length; i++) {
yield o[keys[i]];
}
}
for(var v of obj) { console.log(v); } // '1', '2', '3', '4'
對象屬性沒有一個訂單。如果您需要它,請使用數組。 – str
你正在循環一個對象而不是數組。 – Yoda
如果它是一個數組(不是),[使用「for ... in」與數組迭代是一個壞主意](http://stackoverflow.com/questions/500504/why-is-using-for-in -with陣列迭代-A-壞主意#500531)。 –