如上图,怎么让-1这个对象成为第一个对象呢?
js对象按键自动排序,为什么-1不是第一个呢?
这个排序不同的浏览器实现可能不同,大多数都是字符串的编码顺序排序,而不是按照字面的大小排序。如果想顺序执行,可以考虑这样来:
Object.keys(obj).sort(function(i1,i2){return i1-i2}).forEach(function(item){
console.log(obj[item]);//这里可以顺序得到想要的值
})
这种肯定是一个列表,为什么不用数组而是用对象呢
浏览器解析规则大致是 先按照纯数字,这里不包括 + - 号这样的字符,然后再按照ASCII或其他的排序字符串。
像 -1 这种的,浏览器判定为字符串,当然在数字最后了
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
Chrome Opera 中使用 for-in 语句遍历对象属性时会遵循一个规律:
它们会先提取所有 key 的 parseFloat 值为非负整数的属性,然后根据数字顺序对属性排序首先遍历出来,然后按照对象定义的顺序遍历余下的所有属性。
其它浏览器则完全按照对象定义的顺序遍历属性。
至于在chrome上打印某个对象,你可以很清楚看到 这些对象是按照ASCII码的顺序排序的,打印下 window或者document对象看看
注意,这些都是规律,当然真正的js对象属性是没有顺序的。