在 ES7 中使用 Object.values() 方法获取对象的值

阅读时长 5 分钟读完

在 JavaScript 中,对象是一类非常重要的数据类型,它们是一个键值对的集合。在实际开发中,我们经常需要快速地获取对象的值,例如,获取对象的属性列表、值列表等等。在 ES7 中,Object 对象新增了一个非常方便的方法 Object.values(),它可以帮助我们快速地获取对象的值,让我们来详细了解一下。

Object.values() 方法的基本用法

Object.values() 方法用于返回一个给定对象的所有可枚举属性的值的数组,这个数组的顺序是基于对象自身可枚举属性的枚举顺序。它接受一个对象作为参数,返回一个数组。示例代码如下:

Object.values()方法的深度解析

Object.values() 方法能够返回一个对象中所有可枚举属性的值的数组,但是我们需要注意一下几点:

  1. 返回值数组的顺序并不一定与输入顺序(对象属性的顺序)一致。

  2. 返回值数组中只包含对象自身属性的值,不包含从原型链上继承的属性值。

  3. 如果参数不是对象,Object.values()方法会抛出一个 TypeError 异常。

返回值数组与输入顺序

Object.values()方法返回的数组并非总是按照输入的顺序来排列,而是根据对象自身可枚举属性的枚举顺序来排列的。那么什么是对象自身可枚举属性的枚举顺序呢?在 ES2015 之前,规范中并没有规定对象属性的枚举顺序。因此,不同的 JavaScript 引擎在枚举对象属性时,可能会有不同的顺序。而在 ES2015 中,规范重新定义了对象属性的枚举顺序。具体顺序如下:

  1. 所有数字类型的键按升序排列(例如,会先遍历对象属性名为 1 的属性,然后是属性名为 2 的属性,依次类推)。

  2. 所有字符串类型的键按添加顺序排列(例如,如果先添加了属性 b,后添加了属性 a,那么遍历这两个属性的顺序就是 b,a)。

  3. 所有 Symbol 类型的键按添加顺序排列。

两个对象的顺序也可能不同,取决于对象属性的排列顺序,具体请参考下面的示例。

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

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

继承属性

Object.values() 方法只返回对象自身的可枚举属性的值,而不包含从原型链上继承的属性值。示例代码如下:

由于 obj2 继承了 obj1 的 b 属性,因此 Object.values() 方法不会返回 b 属性的值。

参数校验

如果我们传递的不是一个对象,而是一些其他类型,例如一个字符串或数字,Object.values() 方法会抛出一个 TypeError 异常。示例代码如下:

Object.values() 方法的指导意义

Object.values() 方法是一个非常实用的方法,它能够快速地获取对象中所有可枚举属性的值的数组,这对于一些需要分析对象属性的场景非常有用,例如:

  1. 分析一个对象的属性集合。

  2. 快速获取一个对象的属性值列表。

  3. 将对象属性的值放入一个数组中,例如用于数据分析或可视化等场景。

案例分析

下面是一个实际场景中使用 Object.values() 方法的例子。我们有一个已经声明的对象,它是一个轮廓定制化的对象,里面包含了各种类型的属性值,现在我们需要将这些属性值按需求取出,进行某些操作,例如后面可能需要对值进行格式化、计算等。

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

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

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

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

上面的代码使用 Object.values() 方法取值,根据 columnHeader 中的属性列表,从 person 对象中取出对应的属性值列表。使用 split 将属性分隔,使用 reduce 获取属性值。这种方法效率较高,可以用于数据处理的场景。

结论

Object.values() 方法能够帮助我们快速地获取对象中所有可枚举属性的值的数组,它是非常实用的一个方法。在使用的时候,需要注意返回数组的顺序并不一定与输入顺序一致,数组中不包含从原型链上继承的属性值,以及参数校验等问题。Object.values() 的使用场景非常广泛,我们需要注重实际应用中遇到的情况,结合实际情况使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6737c4a5317fbffedf0c4e78

纠错
反馈