为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Array.concat 完成数组深层拷贝是什么原理?

使用 Array.concat 完成数组深层拷贝是什么原理?

守候你守候我 2019-02-16 21:18:44
数组深层拷贝利用了一个方法arr.concat()有点不太明白?mdn里面好像没有这个吧,不传参的形式数组:var arr = ["a", "b"];var arrCopy = arr;arrCopy[1] = "c";console.log(arr); //["a","c"];浅拷贝与深层的拷贝?上面的数组来说:发现对arrCopy继续拧拷贝时元数组也会进行响应的操作(变化),这就是JS的浅层拷贝, 即:对于数组、对象、对象数组进行简单复制只是创建了一份原内容的引用,指向的仍然是同一块内存区域,修改的时候会对应修改原有的内容,而有时候我们却不需要这种拷贝模式,即我么需要对原内容进行深层拷贝。数组的深层拷贝console.log("------");var arr = ["a", "b"];arrCopy = [];for (var key in arr) {     arrCopy[key] = arr[key];}arrCopy[1] = "c";console.log(arr); //["a","b"]console.log(arrCopy); //["a","c"]数组深层次的拷贝方式2:slice()arrCopy = arr.slice(0);arrCopy[1] = "c";console.log(arr); //["a","b"]console.log(arrCopy); //["a","c"];数组深层拷贝方式三 concat();arrCopy = arr.concat(); //???arrCopy[1] = "c";console.log(arr); //["a","b"];console.log(arrCopy); //["a","c"];//?????
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
可以接受0个或多个参数,下面是摘自ECMAScript标准的一段话。
https://img1.sycdn.imooc.com//5c6bac160001803a08000088.jpg

查看完整回答
反对 回复 2019-02-19
  • 2 回答
  • 0 关注
  • 636 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号