首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object.keys(obj)是如何工作的?

Object.keys(obj)是如何工作的?
EN

Stack Overflow用户
提问于 2013-06-27 16:19:47
回答 5查看 2.6K关注 0票数 4

根据 on MDN

Object.keys返回一个数组,其元素是与直接在对象上找到的可枚举属性对应的字符串。属性的顺序与手动遍历对象的属性的顺序相同。

它包括以下示例:

代码语言:javascript
复制
// 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中密钥的排序是如何发生的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-27 16:25:15

我想你可能误解了这一点:

属性的排序与手动遍历对象属性的顺序相同。

这意味着,Object.keys中属性的顺序与执行for-in循环的顺序相同。

比较这些结果:

代码语言:javascript
复制
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); }

你会发现这两者的顺序是一样的。

票数 6
EN

Stack Overflow用户

发布于 2013-06-27 16:25:16

JavaScript对象是无序的键值对.如果要对对象进行迭代,Object.keys将按返回的顺序返回对象的键数组,但它不能保证结果的顺序与插入顺序有关。

票数 3
EN

Stack Overflow用户

发布于 2013-06-27 16:24:16

根据定义,对象是无序的(参见规范:http://www.ecma-international.org/publications/standards/Ecma-262.htm )。因此,无论您如何输入,都无法保证键的顺序。如果您希望保持顺序,则应保留一个单独的列表和键的顺序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17348292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档