CNode

遍历JavaScript json是按照顺序吗

问答
Rrenzhe20092584发布于9 年前最后回复9 年前9 回复6065 浏览0 收藏
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)

L
liujavamail#1·9 年前

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

R
renzhe20092584#2·9 年前
引用 liujavamail你遍历的应该是一个数组吧

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

R
renzhe20092584#3·9 年前
引用 semicoyoung不要相信你看到的,遍历JSON顺序一定是不靠谱的

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

R
renzhe20092584#4·9 年前

##还有了解的吗

S
semicoyoung#5·9 年前

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

I
iyuq#6·9 年前

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

来自酷炫的 CNodeMD

I
iyuq#8·9 年前

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

来自酷炫的 CNodeMD

参与回复
登录后即可参与回复。登录