ES8 中的 Object.entries() 和 Object.values() 方法详解

在 ECMAScript 2017(也称为 ES8)中引入了两个新的 Object 方法:Object.entries()Object.values()。这两个方法在处理对象上具有强大的功能性,本文将对它们进行详细的介绍,并带有示例代码。

Object.entries()

Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,其排列顺序与使用 for...in 循环的顺序相同(区别于 Object.getOwnPropertyNames() 方法)。

语法如下:

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

其中,obj 为要处理的对象。

返回值是一个数组,其中包含具有两个元素的子数组。每个子数组都表示对象的一对键值对,其中第一个元素是键名,第二个元素是对应的键值。

以下是一个示例:

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

在上面的示例中,Object.entries() 方法返回了一个包含数组 ["foo", "bar"] 和数组 ["baz", 42] 的数组。

我们也可以使用 Object.entries() 方法来遍历一个对象:

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

Object.values()

Object.values() 方法返回一个给定对象自身可枚举属性的值数组,其排列顺序与使用 for...in 循环的顺序相同(区别于 Object.getOwnPropertyNames() 方法)。

语法如下:

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

其中,obj 为要处理的对象。

返回值是一个数组,其中包含对象的值。

以下是一个示例:

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

在上面的示例中,Object.values() 方法返回了一个包含值 "bar" 和值 42 的数组。

我们也可以使用 Object.values() 方法来遍历一个对象:

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

应用场景

Object.entries()Object.values() 方法可以帮助我们轻松地获取对象自身属性的键名、键值或者同时获取这两个值。

其中,Object.entries() 方法将一个对象转换为数组更有适用性。可以方便地处理对象中的键值对,这对于一些需要进行大量配置的模块特别有用。

接下来是使用 Object.entries()Object.values() 方法的两个实际例子:

根据对象的值获取键名

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

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

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

在上面的示例中,我们使用 Object.keys() 方法获取对象的键名数组,并对其进行遍历,最后使用 Object.keys().find() 方法来查找与给定值相符的键名。

将对象转换为 URL 查询字符串

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

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

在上面的示例中,我们使用 Object.entries() 方法来将对象转换为可迭代的键值对数组,然后使用 Array.map() 方法来遍历这个数组并将数组中的每个子数组转换为 URL 查询字符串格式。最后使用 Array.join() 方法来将所有子字符串转换为完整的查询字符串。

结论

Object.entries()Object.values() 方法在处理常规对象和数组时非常有用。这些方法可以帮助我们更轻松地处理对象甚至降低代码的复杂度。因此我们应该熟练掌握这两种方法的使用,以便于更高效地开发以及更高效地利用这些基础特性。

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