学会 ES8 中对象的 entries() 和 values() 方法的区别

ES8 中对象的 entries() 和 values() 方法是对 ES6 对象扩展的一种补充,它们都能够实现对对象的遍历操作,但是它们之间还存在一些差异。在本文中,我们将详细探讨这两种方法的区别以及它们的应用场景。

entries() 方法

entries() 方法可以将对象转换为一个键值对的数组,其中每个数组元素表示对象的一个键值对,一般使用 for...of 循环进行遍历。

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

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

输出结果为:

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

values() 方法

values() 方法可以将对象转换为一个值的数组,其中每个数组元素表示对象的一个值。同样,一般使用 for...of 循环进行遍历。

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

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

输出结果为:

---
--
----

区别

从上面的示例可以发现,entries() 方法返回一个键值对的数组,而 values() 方法返回一个值的数组,它们之间的主要区别在于:

  • entries() 方法会将对象中的键值对组合成一个二维数组,每个数组元素为一个键值对,其中第一个元素为键名,第二个元素为键值。
  • values() 方法只返回对象中的值的数组,其中不包含键值对的键名。

应用场景

entries() 和 values() 方法在实际开发中的应用场景是类似的。它们都能很方便地将一个对象中的所有值转换成数组。

entries() 方法适用于需要对对象中的所有键值对进行操作的场景,比如对一个 JSON 数据进行扁平化处理,需要将所有的键值对都遍历一遍。在这种场景下,entries() 方法可以将对象中的所有键值对转换成一个数组进行处理。

values() 方法适用于需要对对象中的所有值进行操作的场景,比如求一个数组中最大和最小的数值。在这种场景下,values() 方法可以将对象中的所有值转换成一个数组进行处理。

结论

由于 entries() 和 values() 方法都能够将对象中的每个属性值转换成一个数组元素,因此我们可以根据需要,灵活使用这两种方法。同时,我们也要注意它们的区别,避免在错误的场景中应用错误的方法,导致不必要的程序错误。

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