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)的对象上被调用(在keysvalues调用之间不删除或添加键),顺序将相同。
订单是什么?
它取决于对象的how you initialized your objectwhich explorer you are usingthe order of which you have inserted additional keys
如果实际顺序对您也很重要(不仅keysvalues结果都在同一顺序中),那么防弹方法是使用数组
一种不同的方法: Object.entries() 将返回一对[key, value]对的列表(也按照for-in循环提供的顺序),这可能对您的用例更有用。

07-24 09:38
查看更多