js对象是按键自动排序的吗?下面这个对象怎么让-1再最前面啊?

图片描述

如上图,怎么让-1这个对象成为第一个对象呢?
js对象按键自动排序,为什么-1不是第一个呢?

阅读 10.6k
6 个回答

Chrome Opera 中使用 for-in 语句遍历对象属性时会遵循一个规律:
它们会先提取所有 key 的 parseFloat 值为非负整数的属性,然后根据数字顺序对属性排序首先遍历出来,然后按照对象定义的顺序遍历余下的所有属性。
其它浏览器则完全按照对象定义的顺序遍历属性。

至于在chrome上打印某个对象,你可以很清楚看到 这些对象是按照ASCII码的顺序排序的,打印下 window或者document对象看看

注意,这些都是规律,当然真正的js对象属性是没有顺序的。

之前一直不知道js对象是没有顺序的,只是浏览器解析时给的顺序。长见识了,谢谢大家!
最后转换成数组解决了。

js的对象没有顺序。像你这种key值都是数字的情况可以用数组来代替对象。

这个排序不同的浏览器实现可能不同,大多数都是字符串的编码顺序排序,而不是按照字面的大小排序。如果想顺序执行,可以考虑这样来:

Object.keys(obj).sort(function(i1,i2){return i1-i2}).forEach(function(item){
  console.log(obj[item]);//这里可以顺序得到想要的值
})

这种肯定是一个列表,为什么不用数组而是用对象呢

浏览器解析规则大致是 先按照纯数字,这里不包括 + - 号这样的字符,然后再按照ASCII或其他的排序字符串。

像 -1 这种的,浏览器判定为字符串,当然在数字最后了

既然想要顺序、为什么不是数组包含若干对象呢、JSON格式

[
    {},
    {},
    {}
]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏