返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS ES6展开运算符的几个妙用
  • 648
分享到

JS ES6展开运算符的几个妙用

2024-04-02 19:04:59 648人浏览 安东尼
摘要

目录1. 添加属性2. 合并多个对象3. 移除对象属性4.动态移除属性5. 调整属性顺序6. 设置属性默认值7: 属性重命名8. 还有更秀的操作1. 添加属性 复制对象的同时,为其添

1. 添加属性

复制对象的同时,为其添加新的属性。

例子中复制了user对象到userWithPass,并添加了passWord属性。


const user = { id: 110, name: 'Kayson Li'}
const userWithPass = { ...user, password: 'Password!' }

user //=> { id: 110, name: 'Kayson Li'}
userWithPass //=> {  id: 110, name: 'Kayson Li', password: 'Password!' }

2. 合并多个对象

利用...可以合并多个对象到一个新的对象。part1和part2合并到user1:


const part1 = {  id: 110, name: 'Kayson Li' }
const part2 = { id: 110, password: 'Password!' }

const user1 = { ...part1, ...part2 }
//=> { id: 110, name: 'Kayson Li', password: 'Password!' }

3. 移除对象属性

可以结合使用解构和剩余操作符删除对象的属性。例子中password被解构出来,其他属性保留在rest对象里并被返回。


const noPassword = ({ password, ...rest }) => rest
const user = {
  id: 110,
  name: 'Kayson Li',
  password: 'Password!'
}

noPassword(user) //=> { id: 110, name: 'Kayson Li' }

4.动态移除属性

来看一个例子。removeProperty函数接受一个参数prop,利用动态属性名这个特性,prop可以动态地从拷贝对象中移除。


const user1 = {
  id: 110,
  name: 'Kayson Li',
  password: 'Password!'
}
const removeProperty = prop => ({ [prop]: _, ...rest }) => rest
//                     ----       ------
//                          \   /
//                      动态解构

const removePassword = removeProperty('password')
const removeId = removeProperty('id')

removePassword(user1) //=> { id: 110, name: 'Kayson Li' }
removeId(user1) //=> { name: 'Kayson Li', password: 'Password!' }

5. 调整属性顺序

有时候对象的属性并不是我们想要的顺序。利用一些技巧,可以将属性移到最前面或最后面。

为了把id移到最前面,可以把id: undefined放在展开object的前面:


const user3 = {
  password: 'Password!',
  name: 'Bruce',
  id: 300
}

const organize = object => ({ id: undefined, ...object })
//                            -------------
//                          /
//  移动 id 到第一个属性位置

organize(user3)
//=> { id: 300, password: 'Password!', name: 'Bruce' }

要把password移动到最后位置,先从object中解构出password,然后把password放在展开object的后面:


const user3 = {
  password: 'Password!',
  name: 'Bruce',
  id: 300
}

const organize = ({ password, ...object }) =>
  ({ ...object, password })
//              --------
//             /
// 把 password 移动到最后

organize(user3)
//=> { name: 'Bruce', id: 300, password: 'Password!' }

6. 设置属性默认值

当对象不存在某个属性时,我们有时候需要给对象添加这个属性,并设置一个默认值。

例如,user2没有quotes属性,setDefaults函数的作用是确保所有对象都有quotes,并有个默认值[]。

执行setDefaults(user2),返回的对象包含quotes: []。

执行 setDefaults(user4),由于user4已经有quotes了,那它就保持不变。


const user2 = {
  id: 200,
  name: 'Jack Ma'
}

const user4 = {
  id: 400,
  name: '鲁迅',
  quotes: ["我没说过这句话……"]
}

const setDefaults = ({ quotes = [], ...object}) =>
  ({ ...object, quotes })

setDefaults(user2)
//=> { id: 200, name: 'Jack Ma', quotes: [] }

setDefaults(user4)
//=> {
//=>   id: 400,
//=>   name: '鲁迅',
//=>   quotes: ["我没说过这句话……"]
//=> }

如果想让这个属性在最前面,可以这样写:


const setDefaults = ({ ...object}) => ({ quotes: [], ...object })

7: 属性重命名

结合前面的几个技巧,我们可以写一个给属性重命名的函数。

假设某些对象都有大写的ID属性,我们想让它们都变成小写,该怎么做呢?先从object中解构出ID的值,然后再把这个值合并到新对象里,改成小写的id:


const renamed = ({ ID, ...object }) => ({ id: ID, ...object })

const user = {
  ID: 500,
  name: "张全蛋"
}

renamed(user) //=> { id: 500, name: '张全蛋' }

8. 还有更秀的操作

可以根据条件决定是否添加某个属性,这在构造请求参数的时候非常有用。比如,我们只在password有值的情况才添加该属性:


const user = { id: 110, name: 'Kayson Li' }
const password = 'Password!'
const userWithPassword = {
  ...user,
  id: 100,
  ...(password && { password })
}

userWithPassword //=> { id: 110, name: 'Kayson Li', password: 'Password!' }

以上就是js es6展开运算符的几个妙用的详细内容,更多关于JS ES6展开运算符的资料请关注编程网其它相关文章!

--结束END--

本文标题: JS ES6展开运算符的几个妙用

本文链接: https://lsjlt.com/news/124969.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JS ES6展开运算符的几个妙用
    目录1. 添加属性2. 合并多个对象3. 移除对象属性4.动态移除属性5. 调整属性顺序6. 设置属性默认值7: 属性重命名8. 还有更秀的操作1. 添加属性 复制对象的同时,为其添...
    99+
    2024-04-02
  • JS中位运算符的一些妙用
    目录前言:1. 使用左移运算符 << 迅速得出2的次方2. 使用 ^ 切换变量 0 或 13. 使用 & 判断奇偶性4. 使用 !! 将数字转为布尔值5. 使用~...
    99+
    2024-04-02
  • es6中扩展运算符如何用
    本篇内容介绍了“es6中扩展运算符如何用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • ES6中扩展运算符怎么用
    这篇文章主要介绍了ES6中扩展运算符怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。扩展运算符  ...可以将数组转换为逗号分隔的参数序...
    99+
    2024-04-02
  • ES6扩展运算符如何使用
    这篇“ES6扩展运算符如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ES6扩展运算符如何使用”文章吧。什么是spre...
    99+
    2023-06-17
  • ES6中的扩展运算符怎么使用
    这篇文章主要讲解了“ES6中的扩展运算符怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ES6中的扩展运算符怎么使用”吧!ES6的扩展运算符,它的语法...
    99+
    2024-04-02
  • ES6扩展运算符的使用方法示例
    目录什么是spread 和rest运算符数组的扩展运算符rest运算符(收集作用)spread运算符(展开作用)对象的扩张运算符浅克隆深克隆总结什么是spread 和rest运算符 ...
    99+
    2024-04-02
  • 如何正确的使用ES6扩展运算符
    本篇文章给大家分享的是有关如何正确的使用ES6扩展运算符,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是spread 和rest运算符spread和rest运算符在ES6中...
    99+
    2023-06-20
  • es6对象扩展运算符怎么应用
    ES6的对象扩展运算符(`...`)可以用于复制对象、合并对象、传递函数参数等多种应用。 复制对象:使用对象扩展运算符可以非常方...
    99+
    2023-10-25
    es6
  • JavaScript中几个常用的运算符
    这篇文章主要讲解了“JavaScript中几个常用的运算符”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中几个常用的运算符”吧!一、可选...
    99+
    2024-04-02
  • ES6扩展运算符的使用方法有哪些
    这篇文章主要介绍“ES6扩展运算符的使用方法有哪些”,在日常操作中,相信很多人在ES6扩展运算符的使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ES6扩展运算符...
    99+
    2024-04-02
  • ES6扩展运算符的理解与使用场景
    目录1、替代apply方法,一般在函数调用时处理参数2、剩余参数(rest运算符),主要针对函数形参3、数据连接、合并4、数组和对象的拷贝5、字符串转数组6、在函数调用时使用拓展运算...
    99+
    2024-04-02
  • JS ES扩展运算符怎么使用
    这篇文章主要介绍“JS ES扩展运算符怎么使用”,在日常操作中,相信很多人在JS ES扩展运算符怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS ES扩展运算符怎么使用...
    99+
    2023-06-21
  • JavaScript扩展运算符的学习及应用详情(ES6)
    目录学习应用函数参数数组合并解构赋值字符串转换转换数组前言: 扩展运算符是ES6新增的一种运算符,他可以帮助我们简化代码,简化操作,所以在开发中是非常常用的,下面我将从学习与应用两个...
    99+
    2022-11-13
    JavaScript扩展运算符应用 JavaScript扩展运算符
  • JavaScript如何使用展开运算符
    小编给大家分享一下JavaScript如何使用展开运算符,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用展开运算符(...)var fruits&nb...
    99+
    2023-06-17
  • JavaScript展开运算符和剩余运算符的区别详解
    目录什么是剩余运算符?剩余运算符在JavaScript函数中是如何工作的?注意!不能在包含剩余参数的函数体中使用"use strict"剩余运算符在参数解构中是如...
    99+
    2024-04-02
  • 掌握Python运算符的巧妙应用:条件运算符、优先级运算符的技巧应用
    了解Python运算符的巧妙运用:条件运算符、优先级运算符的使用技巧 Python作为一门广泛应用的编程语言,提供了丰富的运算符,让程序员可以更加灵活地处理不同的运算逻辑。本文将介绍Python中条件运算符和优先级运算符的使用技...
    99+
    2024-01-20
    条件运算符 优先级运算符。
  • JS中使用扩展运算符的方法有哪些
    本篇内容主要讲解“JS中使用扩展运算符的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS中使用扩展运算符的方法有哪些”吧!复制数组我们可以使用展开操...
    99+
    2024-04-02
  • JavaScript展开运算符和剩余运算符的区别是什么
    这篇文章主要介绍“JavaScript展开运算符和剩余运算符的区别是什么”,在日常操作中,相信很多人在JavaScript展开运算符和剩余运算符的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jav...
    99+
    2023-06-22
  • 分享几个JavaScript运算符的使用技巧
    目录一、可选链接运算符【?.】二、逻辑空分配(?? =)三、逻辑或分配(|| =)四、逻辑与分配(&& =)最后ECMAScript发展进程中,会有很...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作