Object.keys()和Object.values()方法返回保留相同顺序的数组

时间:2017-01-20 10:44:42

标签: javascript

Object.keys()Object.values()方法是否返回保留相同顺序的数组?

我的意思是,假设我们有以下对象:

var obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";

如果我拨打obj.keys()obj.values(),他们会返回相同订单的属性吗?

prop1
prop2

Foo
Bar

prop2
prop1

Bar
Foo

右?

所以以下选项是不可能的,对吧?

prop1
prop2

Bar
Foo

1 个答案:

答案 0 :(得分:5)

简而言之,

Object.keysObject.values(还有Object.entries())都通过对象上的for-in循环枚举。
由于两者都使用相同的[[Enumerate]],因此只要在具有相同不变自己的原型的对象上调用它们(而无需在keys和{{1}之间删除或添加键) }调用),顺序将相同。

订单是什么?
它取决于对象的how you initialized your objectwhich explorer are you usingthe order of which you have inserted additional keys
如果实际订单对您也很重要(不仅valueskeys的结果都将按照相同的顺序进行),防弹方法将是< strong>使用数组。

另一种方法:Object.entries()将返回values对的列表(也按[key, value]循环提供的顺序),这可能对您的用例更有用。