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

随着 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


猜你喜欢

  • PWA 技术如何应用到网页架构设计中?

    前言 近年来,PWA(Progressive Web App)技术受到越来越多的关注。PWA 利用 Web 技术创造出更加优秀的用户体验,提升在线应用的性能和功能,是 Web 和 Native 应用的...

    1 年前
  • 如何使用 Cypress 对不同途径的用户行为进行模拟

    Cypress 是一个强大的前端测试框架,在模拟用户行为方面非常出色。本文将介绍如何使用 Cypress 对不同途径的用户行为进行模拟,包括点击、输入、滚动、拖拽等操作。

    1 年前
  • 基于 Flask 设计 CRUD RESTful API

    RESTful API 是一种设计风格,它可以帮助我们创建可扩展和灵活的 web 应用程序。在本文中,我们将使用 Python Flask 框架来构建基于 RESTful API 的 web 应用程序...

    1 年前
  • 如何利用 Headless CMS 创造强大的内容管理系统

    在构建一个网站时,内容管理非常重要。如何更快地处理内容?如何使内容更多样化?如何节省时间和金钱?这些都是前端类开发者需要考虑的问题。Headless CMS 正在成为一个非常流行的解决方案,因为它可以...

    1 年前
  • Serverless 部署过程中出现的一些常见问题

    Serverless 技术在近年来备受前端开发者们的青睐,它简化了企业和个人网站的开发和部署过程。但是, Serverless 在使用过程中也会遇到一些常见问题,这些问题可能导致您的应用无法正常工作。

    1 年前
  • CSS Flexbox 实现联动列表的技巧

    CSS Flexbox 是一种 CSS 布局模式,它允许开发者对页面中的元素进行灵活的排列。在前端开发中,我们可以使用 Flexbox 来实现各种布局效果,包括联动列表。

    1 年前
  • 常用的 Angular 指令及其应用

    Angular 是一种宽松的前端框架,具有丰富的指令库,使开发人员可以更轻松地构建现代单页应用程序。本文将介绍 Angular 中一些常用的指令及其应用。 ngIf ngIf 指令在 Angular ...

    1 年前
  • ECMAScript 2019:JavaScript 中的新函数特性总结

    ECMAScript 2019:JavaScript 中的新函数特性总结 ECMAScript 2019(简称 ES2019)是 JavaScript 的第九个版本标准,它引入了一些新的函数特性,使得...

    1 年前
  • 利用 PM2 实现 Node.js 应用的负载均衡

    什么是负载均衡? 负载均衡是指将大量的请求分配到多个处理器或服务器上,以便更好地处理这些请求。在现代应用程序中,负载均衡可以提高应用程序的可用性和性能,因为它可以在应用程序的多个实例之间分配流量。

    1 年前
  • Deno 中使用 WebSocket 实现多人在线游戏的完整教程

    前言 WebSocket 是一个基于 TCP 协议的 Web 通信协议,它的优点在于能在客户端和服务器之间建立一个双向通信的通道,以便实时的数据传输。 Deno 是一个新一代的 JavaScript ...

    1 年前
  • Koa 教程:解决 “koa-generic-session is not a function” 错误

    在使用 Koa 进行开发的过程中,你可能会遇到 “koa-generic-session is not a function” 的错误。这个错误通常发生在你尝试使用 koa-generic-sessi...

    1 年前
  • 在 TypeScript 中使用交叉类型与联合类型

    介绍 在 TypeScript 中,我们可以使用交叉类型和联合类型来组合多个类型。这两种类型可以帮助我们更好地组织代码和定义类型。 交叉类型表示同时具有多个类型的组合,而联合类型表示具有多种可能的类型...

    1 年前
  • 使用 Fastify 框架实现 GraphQL 查询参数自定义筛选

    前言 GraphQL 是一种用于 API 的查询语言,它允许客户端按照自己的需要去定义和获取需要的数据。与 RESTful API 不同,GraphQL 可以一次性获取多个资源,大大减少了 API 调...

    1 年前
  • Web Components 的 Jest 单元测试姿势及相应的使用技巧

    Web Components 是一种用于创建复杂应用的强大工具,它们可以高效地打造可重用、可维护的组件。然而,与其他前端技术一样,Web Components 也需要进行单元测试以确保它们的正确性和稳...

    1 年前
  • SASS 中 @import 关键字的正确使用方法

    在前端开发中,SASS 是一种非常流行的 CSS 预处理器,可以提高开发效率和代码的可维护性。而 @import 关键字则是 SASS 中常用的一个功能,用于导入一个 SASS 文件到另一个 SASS...

    1 年前
  • 解决 Material Design 中使用 TabLayout 出现重影问题

    Material Design 是一种设计风格,它强调物理性和真实感,被广泛应用于移动端和 Web 界面。TabLayout 是 Material Design 中的一个组件,用于实现标签页切换。

    1 年前
  • ES2016(ES7) 的新特性之 Array.prototype.includes

    在前端开发中,我们经常会用到数组的操作。而 ES2016(ES7) 推出了一个新的数组方法 Array.prototype.includes,可以方便地检查一个数组是否包含某个值。

    1 年前
  • 如何优雅的使用 CSS Reset

    CSS Reset 是指一系列 CSS 样式规则,可以让不同浏览器对 HTML 标签的默认样式进行统一。它主要的作用是消除浏览器之间的差异,并让开发者自定义页面的样式更加方便。

    1 年前
  • 解决 Docker 容器内安装 MySQL 后无法启动的问题

    在使用 Docker 容器化部署 MySQL 时,有时候会遇到 MySQL 无法启动的问题。这个问题可能由许多原因引起,例如:容器内存不足、权限设置问题等等。本文将介绍如何解决这些问题,使您可以顺利启...

    1 年前
  • 使用 Babel 编译 async/await 代码时,经常会遇到的类型错误

    在 JavaScript 中,async/await 已经成为了一种优雅的代码异步处理方式。使用这种方式可以让代码更加简洁易懂,而且可以避免回调地狱出现。然而,在使用 Babel 编译 async/a...

    1 年前

相关推荐

    暂无文章