网站首页 > 博客文章 正文
前言
这几天学习中用到了…这个玩意,叫扩展运算符,记录一下这货的用法备忘。
感觉这玩意就是把数组或者对象等能够迭代的对象拆开,数组去掉[],对象去掉{},字符串拆成一个个字符。
提示:以下是本篇文章正文内容,下面案例可供参考
一、扩展运算符使用指南
console.log(...'abc')
console.log(...[1,2,3])
console.log(...{'name':'zhangsan'})//报错,因为解析出来的'name':'zhangsan'
//啥也不是,打印不出来,再包上{}就可以了:
console.log({...{'name':'zhangsan'}})//这一技巧经常用来复制对象,一层对象是浅拷贝
//数组的合并
let shArray = ['1', '2', '3'];
console.log(['0', ...shArray, '4']);
// 打印结果 [0, 1, 2, 3, 4]
var a1 = [0, 1,];
var a2 = [2, 3];
console.log([...a1, ...a2]);
// 打印结果 [0, 1, 2, 3]
二、深拷贝和浅拷贝
再记录一个知识:
深拷贝和浅拷贝的概念,如果新复制的对象改变了属性值,原来的对象值也跟着发生改变,叫做浅拷贝,反之,深拷贝。
扩展运算符复制的时候:
如果数组或对象中的元素只是简单类型,一层对象或者数组,就是深拷贝;如果数组或对象中的元素是复杂类型,就是浅拷贝。
例如:
//深拷贝
let staff1 = {name: 'xiaohong',age: 27};
let staff2 = {...staff};
staff2.name = 'xiaoming'
staff1 : {name: 'xiaohong',age: 27}
staff2:{name: "xiaoming", age: 27}
//浅拷贝
let aa = {
age: 18,
name: 'aaa',
address: {
city: "hangzhou"
}
}
let bb = {...aa}
bb.address.city = 'shanghai'
//拷贝后的值
aa: {
age: 18,
name: 'aaa',
address: {
city: 'shanghai'
}
}
bb: {
age: 18,
name: 'aaa',
address: {
city: 'shanghai'
}
}
扩展运算符如果遇到复杂类型也可以实现深复制:
let cc = {
age: 18,
name: 'aaa',
address: {
city: "hangzhou"
}
}
let dd = {
//注意这里
...cc,
address: {
//注意这里
...cc.address
}
}
dd.address.city = 'shanghai'
//拷贝后的值
cc: {
age: 18,
name: 'aaa',
address: {
city: 'hangzhou'
}
}
dd: {
age: 18,
name: 'aaa',
address: {
city: 'shanghai'
}
}
总结
灵活使用扩展运算符能让代码看起来很酷!确实很简洁方便。
猜你喜欢
- 2024-10-27 ES6扩展运算符:详解与实践(es6扩展运算符深拷贝)
- 2024-10-27 Excel|文本花样连接,CONCATENATE、CONCAT、TEXTJOIN帮你完成
- 2024-10-27 Javascript中数组的方法(javascript 数组方法)
- 2024-10-27 LeetCode题集-4 - 寻找两个有序数组的中位数,六种解法,万字讲解
- 2024-10-27 JS中的Array对象——数组的合并、转换、迭代、排序、堆栈
- 2024-10-27 JavaScript 数组方法的介绍(javascript数组方法有哪些)
- 2024-10-27 vue数组更新后不渲染页面与$set的渊源
- 2024-10-27 vue-router的基本使用(vue- router)
- 2024-10-27 ???数组中的逆序对(归并排序思想)
- 2024-10-27 数据分析工具:Pandas架构分析(pandas数据分析模型)
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)