繁体   English   中英

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

[英]Do Object.keys() and Object.values() methods return arrays that preserve the same order

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.keysObject.values (以及Object.entries() )都通过对象上的for-in循环进行枚举。
由于两者都使用相同的[[Enumerate]] ,只要在具有相同未更改自己原型的对象上调用它们(在keysvalues调用之间不删除或添加键),顺序将是相同的。

顺序是什么?
这取决于您如何初始化您的对象您使用的是哪个资源管理器以及向该对象插入附加键的顺序
如果实际顺序对您也很重要(并且不仅keysvalues结果的顺序相同),防弹方法将使用 array

一种不同的方法: Object.entries()将返回[key, value]对的列表(也与for-in循环提供的顺序相同),这可能对您的用例更有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM