迎接 ES2021:如何更好地使用 Object.entries 提取对象属性及其值

阅读时长 5 分钟读完

随着 ECMAScript 2021(以下简称 ES2021)的到来,越来越多的新功能和 API 在前端开发中得到广泛应用。其中,Object.entries 是一个非常实用的方法,它可以让我们更方便地提取对象属性及其值。本文将详细介绍如何使用 Object.entries,以及如何在实际开发中更好地运用它。

什么是 Object.entries

Object.entries 是 ES2017 新增的方法,它返回一个给定对象自身可枚举属性的键值对数组,其中键名和键值分别组成数组中的每个子数组。具体来说,它的语法如下:

其中 obj 是要返回键值对数组的对象。

如何使用 Object.entries

使用 Object.entries 非常简单,我们只需要将要操作的对象作为参数传入该方法即可。下面是使用 Object.entries 的示例代码:

在这个例子中,我们创建了一个包含两个属性的对象,并使用 Object.entries 方法将其转换成了一个由两个子数组组成的数组。

另外需要注意的是,使用 Object.entries 提取属性时,它会返回所有可枚举属性,包括原型链上的属性。如果我们只想提取对象本身的属性,可以使用 Object.getOwnPropertyNames 方法进行筛选。

如何在开发中更好地使用 Object.entries

在实际开发中,Object.entries 能为我们提供很多便利。下面是几个使用 Object.entries 的实际场景。

1. 批量操作对象属性

假如我们有一个包含多个用户信息的对象,我们希望批量修改其中的某些属性,可以使用 Object.entries 配合 Array.prototype.forEach 来实现:

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

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

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

在这个例子中,我们使用 Object.entries 将对象 users 转换成了一个包含三个子数组的数组,并使用 forEach 对其中每个子数组进行遍历。遍历时,我们将每个子数组的第一个元素作为 key,第二个元素作为 value,再根据条件判断是否需要修改对象属性。

2. 对象转为 URL 查询字符串

将一个对象转换成 URL 查询字符串是 Web 开发中一个常见的需求。使用 Object.entries,我们可以在不依赖任何外部库的情况下快速完成该转换。

在这个例子中,我们将一个包含三个属性的对象 params 转换成了一个 URL 查询字符串。具体来说,我们使用 Object.entries 将对象转换成了一个包含三个子数组的数组,并使用 filter 过滤了值为 null 或 undefined 的子数组。接着,我们使用 map 和 join 方法将筛选出来的子数组转换成了 URL 查询字符串。

3. 对象解构

在 ES6 中,我们可以使用对象解构来方便地从对象中提取属性。使用 Object.entries,我们甚至可以同时解构多个属性。

在这个例子中,我们使用 Object.entries 将对象 data 转换成了一个包含三个子数组的数组,并使用解构将子数组中的第一个元素绑定到 firstKey 和 secondKey 变量,第二个元素绑定到 firstValue 和 secondValue 变量。

总结

Object.entries 是一个非常实用的方法,它可以方便地提取对象属性及其值,也可以解决实际开发中的很多问题。在使用该方法时,我们需要注意的是:

  • 它会返回所有可枚举属性,包括原型链上的属性;
  • 我们可以使用其他方法配合 Object.entries,完成批量修改属性、转换 URL 查询字符串等操作;
  • 我们也可以使用解构,方便地从数组中提取多个属性。

ES2021 为前端开发带来了更多便利,Object.entries 只是其中一个。希望本文对您有所启发,并能够更好地帮助您在前端开发中使用 Object.entries。

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

纠错
反馈