为什么我的对象从最后一个到第一个for for循环?

时间:2016-12-14 09:33:44

标签: javascript arrays

我对数组

感到困惑

我的数据是

enter image description here

和我的for循环

 for (var data in statInfo["segment"][0]) {
       console.log(data)
 }

我的结果是

数据打印

segment5 segment4 段3 分段2 SEGMENT1

谢谢

1 个答案:

答案 0 :(得分:2)

对象属性的枚举不是按字母顺序排列的。

实际上它是left to implementations to decide

大多数浏览器根据属性创建顺序IIRC实施。

如果您需要订购,请使用ArrayMapSet

最后,在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'

相关问题