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