如何在 ES6 中正确使用对象的 Keys 和 Values 方法

阅读时长 3 分钟读完

ES6中新增了一些操作对象的方法,其中包括了 Object.keys()Object.values()。这两种方法让我们可以更加方便地操作对象,提高我们的生产效率。本文将介绍使用这两个方法的正确方法,以及相关的技巧和限制。

Object.keys()

Object.keys() 方法返回一个数组,包含给定对象所有可枚举的own属性的键名。简单来说,该方法就是把对象的 key 值取出来,组成一个数组返回。用法如下所示:

当然,该方法也可以用于迭代某个对象的实例属性,例如:

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

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

需要注意的是,如果想要获取到对象的所有属性,应该使用 Reflect.ownKeys() 方法。这个方法返回所有的 own key,包括不可枚举属性和 Symbol 类型的属性。

Object.values()

Object.values() 方法返回一个数组,包含给定对象的所有可枚举属性的值。用法如下所示:

Object.keys() 方法一样,它也可以用于迭代某个对象的实例属性。

需要注意的是,该方法仅返回 object 的 own enumerable property。如果想要拿到所有 property 的 value,需使用 for...in 循环。不过 for...in 会循环出对象原型链上的属性,用起来要小心。

实际应用

上述方法通常在数组对象迭代的时候比较有用,比如:

还有一种常见的应用场景是当我们需要把某个对象转化为 map 时,我们可以使用 Object.entries() 方法,然后再用 Map 构造函数来创建一个新的 Map 对象。例如:

总结

以上就是使用 ES6 中对象的 keysvalues 方法的正确姿势了。值得注意的是,这两个方法只返回对象的可枚举own属性,并且都不包括Symbol类型的属性。当我们用于构造对象的 map 时,需要注意区分键名所属的实体。希望提供的方法对大家有所帮助。

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

纠错
反馈