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
答案 0 :(得分:5)
简而言之,是。
Object.keys
和Object.values
(还有Object.entries()
)都通过对象上的for-in
循环枚举。
由于两者都使用相同的[[Enumerate]]
,因此只要在具有相同不变自己的原型的对象上调用它们(而无需在keys
和{{1}之间删除或添加键) }调用),顺序将相同。
订单是什么?
它取决于对象的how you initialized your object,which explorer are you using和the order of which you have inserted additional keys。
如果实际订单对您也很重要(不仅values
和keys
的结果都将按照相同的顺序进行),防弹方法将是< strong>使用数组。
另一种方法:Object.entries()
将返回values
对的列表(也按[key, value]
循环提供的顺序),这可能对您的用例更有用。