根据 on MDN
Object.keys返回一个数组,其元素是与直接在对象上找到的可枚举属性对应的字符串。属性的顺序与手动遍历对象的属性的顺序相同。
它包括以下示例:
// array like object with random key ordering
var an_obj = { 100: "a", 2: "b", 7: "c"};
alert(Object.keys(an_obj)); // will alert "2, 7, 100"但是根据定义,键应该按照插入对象的顺序打印为100, 2, 7,而不是2, 7, 100。
请告诉我,在Object.key中密钥的排序是如何发生的。
发布于 2013-06-27 16:25:15
我想你可能误解了这一点:
属性的排序与手动遍历对象属性的顺序相同。
这意味着,Object.keys中属性的顺序与执行for-in循环的顺序相同。
比较这些结果:
var an_obj = { 100: "a", 2: "b", 7: "c"};
//using object.keys...
console.log(Object.keys(an_obj));
//using a manual loop...
for(var k in an_obj) { console.log(k); }你会发现这两者的顺序是一样的。
发布于 2013-06-27 16:25:16
JavaScript对象是无序的键值对.如果要对对象进行迭代,Object.keys将按返回的顺序返回对象的键数组,但它不能保证结果的顺序与插入顺序有关。
发布于 2013-06-27 16:24:16
根据定义,对象是无序的(参见规范:http://www.ecma-international.org/publications/standards/Ecma-262.htm )。因此,无论您如何输入,都无法保证键的顺序。如果您希望保持顺序,则应保留一个单独的列表和键的顺序。
https://stackoverflow.com/questions/17348292
复制相似问题