遍历JavaScript json是按照顺序吗
发布于 7 年前 作者 renzhe20092584 5379 次浏览 来自 问答
var jsons = {}
for(var i = 0; i < 12; i++){
    var tt = {};
    tt.val = i;
    tt.key = "dsfs";

    jsons[ i ] = tt;
}

for(var k in jsons){
    console.log(jsons[ k ])
}

###遍历结果 应该是无序的啊 为什么


{ val: 0, key: 'dsfs' }
{ val: 1, key: 'dsfs' }
{ val: 2, key: 'dsfs' }
{ val: 3, key: 'dsfs' }
{ val: 4, key: 'dsfs' }
{ val: 5, key: 'dsfs' }
{ val: 6, key: 'dsfs' }
{ val: 7, key: 'dsfs' }
{ val: 8, key: 'dsfs' }
{ val: 9, key: 'dsfs' }
{ val: 10, key: 'dsfs' }
{ val: 11, key: 'dsfs' }

正常来说是没有顺序的,javascript遍历表是按照顺序遍历的????

9 回复

不要相信你看到的,遍历JSON顺序一定是不靠谱的

你遍历的应该是一个数组吧

@liujavamail 不是数组jsons是 {} 而不是 []

@semicoyoung 为什么每次都是按照你存取的顺序的

##还有了解的吗

一般的js引擎实现都是按key的定义顺序,但是js语言标准里并没有规定要按什么顺序来,所以最好不要依赖keys的顺序,当然,如果你只在v8下用应该也没问题

来自酷炫的 CNodeMD

@iyuq 只用 node 应该没啥问题吧

目前版本没有问题,如果你非要依赖keys的定义顺序,可以自己维护一个keys的数组到obj里,没次定义新属性的同时往keys数组里push相应的key。

来自酷炫的 CNodeMD

@iyuq 好的谢谢啦

回到顶部