javascript对象如何按键的升序排序?
我第一次注意到它。
/* It does maintain a order. The order in which you inserts the value. And if it does not maintain any orders, please show me example, that will be really helpful to understand me the concepts.
Thanks in advance.
*/
var a = {"13" : "1", "15" : "2", "14" : "3", "12" : "4"};
console.log(JSON.stringify(a)); /* This is nothing to do with for loop */
for(let i in a) {
console.log(i + " = " + a[i]);
}
/* But the keys other than numbers are not sorting. */
var b = {"c" : "1", "a" : "2", "b" : "3", "d" : "4"};
for(let i in b) {
console.log(i + " = " + b[i]);
}
第一个对象是自己排序的。我正在为两个对象创建键作为字符串。但第二个目标不是排序。
答案 0 :(得分:3)
此行为现在是JavaScript standard:
的一部分
对于每个自己的属性键P,O是一个整数索引,按升序数字索引顺序
一个。添加P作为键的最后一个元素。
- 醇>
对于每个属性的键P,它是一个String但不是整数索引,在属性创建顺序中
一个。添加P作为键的最后一个元素。
以下是详细说明:
http://2ality.com/2015/10/property-traversal-order-es6.html
简而言之,理由如下:
答案 1 :(得分:0)
我发现this answer与您提出的问题有关。
引用:
这是v8处理关联数组的方式。已知问题问题164 但它遵循规范,因此标记为按预期工作'。那里 不是循环关联数组所需的顺序。
一个简单的解决方法是在数字值前加上字母,例如: ' size_7':[' 9149',' 9139']等。
标准将在下一个ECMAScript规范中改变[chrome] 开发人员要改变这一点。