做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
Maor Refaeli.. 6
简而言之,是。
两者Object.keys
和Object.values
(并且还Object.entries()
经由)枚举for-in
在物体上循环。
由于都使用相同的[[Enumerate]]
,只要它们被称为具有相同的对象上不变自己的原型(不删除或添加的按键之间的部位keys
和values
电话),订单将是相同的。
订单是什么?
这取决于您如何初始化对象,使用的资源管理器以及向该对象插入其他键的顺序。
如果实际顺序对您也很重要(并且不仅结果keys
和values
顺序都相同),那么防弹方法就是使用数组。
一种不同的方法:Object.entries()
将返回对列表[key, value]
(也以for-in
循环提供的相同顺序),这可能对您的用例更有用。
简而言之,是。
两者Object.keys
和Object.values
(并且还Object.entries()
经由)枚举for-in
在物体上循环。
由于都使用相同的[[Enumerate]]
,只要它们被称为具有相同的对象上不变自己的原型(不删除或添加的按键之间的部位keys
和values
电话),订单将是相同的。
订单是什么?
这取决于您如何初始化对象,使用的资源管理器以及向该对象插入其他键的顺序。
如果实际顺序对您也很重要(并且不仅结果keys
和values
顺序都相同),那么防弹方法就是使用数组。
一种不同的方法:Object.entries()
将返回对列表[key, value]
(也以for-in
循环提供的相同顺序),这可能对您的用例更有用。