Chrome 和 Opera 可能会自动对对象属性进行排序

IT技术 javascript
2021-03-09 20:37:44

问题是:Chrome 会自动对对象的属性进行排序。

如果我有一个对象,例如:

var obj = {4: "first", 2: "second", 1: "third"};

然后当我下一步做时:

for(var i in obj) {
    console.debug(obj[i]);
}

我看下一个:

third second first

但期望:

first second third

2个回答

永远不要依赖属性的顺序。它们是无序的,并且没有定义应以何种顺序枚举属性的规范。

Chrome 使用数字键对属性进行数字排序,而其他浏览器则按插入顺序枚举它们。它依赖于实现。

there is no specification that defines in which order properties should be enumerated..... 我有个主意。我们把它们放进去的顺序怎么样。
2021-04-19 20:37:44

您不应该期望for..in循环中的键有任何特定的顺序来自MDC 文档

for...in 循环以任意顺序迭代对象的属性

如果您想使用数字键进行排序,请使用数组。