7. Object.entries()
和 Object.values()
本章描述了由 Jordan Harband 提出的 ECMAScript 2017 特性“Object.values/Object.entries”。
7.1 概述
7.1.1 Object.entries()
7.1.2 Object.values()
7.2 Object.entries()
此方法具有以下签名:
如果 JavaScript 数据结构具有键和值,则*条目*是一个键值对,编码为一个 2 元素数组。 Object.entries(x)
将 x
强制转换为对象,并返回其可枚举的自有字符串键属性的条目,以数组形式返回。
键为符号的属性将被忽略。
Object.entries()
最终为我们提供了一种迭代对象属性的方法(在此处阅读为什么对象默认情况下不可迭代)。
7.2.1 通过 Object.entries()
设置 Map
Object.entries()
还允许您通过对象设置 Map。这比使用 2 元素数组的数组更简洁,但键只能是字符串。
7.2.2 常见问题解答:Object.entries()
-
为什么
Object.entries()
的返回值是数组而不是迭代器?
这种情况下的相关先例是 Object.keys()
,而不是例如 Map.prototype.entries()
。
-
为什么
Object.entries()
只返回可枚举的自有字符串键属性?
同样,这样做是为了与 Object.keys()
保持一致。该方法也会忽略键为符号的属性。最终,可能会有一个方法 Reflect.ownEntries()
返回所有自有属性。
7.3 Object.values()
Object.values()
具有以下签名:
它的工作方式与 Object.entries()
非常相似,但顾名思义,它只返回自有可枚举字符串键属性的值。