ES10 中的 Object.entries() 和 Object.values() 方法的使用方法

在 ES10 中,Object 对象新增了两个方法:Object.entries() 和 Object.values()。这两个方法能够让我们更方便地操作对象的属性和值。本文将详细介绍这两个方法的使用方法,并给出一些示例代码。

Object.entries()

Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,其排列顺序与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链上的属性)。数组中的每个元素都是一个包含两个元素的数组,第一个元素是属性名,第二个元素是属性值。

下面是 Object.entries() 方法的基本语法:

-------------------

其中,obj 表示要获取键值对的对象。

下面是一个示例代码:

----- --- - - ---- ------ ---- -- --
--------------------------------- -- - ------- ------- ------- --- -

上述代码中,我们定义了一个对象 obj,它有两个属性 foo 和 baz。然后我们使用 Object.entries() 方法获取 obj 的键值对数组,并将其输出到控制台。

需要注意的是,Object.entries() 方法只会返回对象自身的可枚举属性的键值对数组,不包括原型链上的属性。如果要获取所有属性的键值对,可以使用 Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法,再将它们合并到一个数组中。

Object.values()

Object.values() 方法返回一个给定对象自身可枚举属性的值的数组,其排列顺序与使用 for...in 循环遍历该对象时返回的顺序一致。与 Object.entries() 方法不同的是,它只返回属性的值,不包括属性名。

下面是 Object.values() 方法的基本语法:

------------------

其中,obj 表示要获取值的对象。

下面是一个示例代码:

----- --- - - ---- ------ ---- -- --
-------------------------------- -- - ------ -- -

上述代码中,我们定义了一个对象 obj,它有两个属性 foo 和 baz。然后我们使用 Object.values() 方法获取 obj 的值的数组,并将其输出到控制台。

需要注意的是,Object.values() 方法只会返回对象自身的可枚举属性的值的数组,不包括原型链上的属性。如果要获取所有属性的值的数组,可以使用 Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法,再将它们合并到一个数组中。

总结

Object.entries() 和 Object.values() 方法是 ES10 中新增的两个方法,它们能够更方便地操作对象的属性和值。Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,Object.values() 方法返回一个给定对象自身可枚举属性的值的数组。需要注意的是,它们只会返回对象自身的可枚举属性,不包括原型链上的属性。

在实际开发中,我们可以使用这两个方法来遍历对象的属性和值,或者将对象转换成数组进行一些操作。下面是一个示例代码:

----- --- - - ---- ------ ---- -- --
----- ------- - --------------------
----- ------ - -------------------

---------------------- ------- -- -
  -------------------- -----------
---

----- --- - ------------------- ---- -- --- - ---- ---
-----------------

上述代码中,我们首先使用 Object.entries() 和 Object.values() 方法分别获取 obj 的键值对数组和值的数组。然后,我们使用 forEach() 方法遍历键值对数组,并输出每个属性的名字和值;使用 reduce() 方法计算值的总和,并输出到控制台。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6607faeed10417a222699b52