js--数组复制

1. slice()方法
slice() 方法可从已有的数组中返回选定的元素。
arrayObject.slice(start,end)
// start : 输入的是下标值 从下标值开始 截取 到 end 结束位置停止
2. concat()方法
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var arr1 = [{"name":"weifeng"},{"name":"boy"}];//原数组
var arr2 = [].concat(arr1);//拷贝数组
3.使用 JSON.stringify和JSON.parse**实现深拷贝:
JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象
对于本例, let newList = JSON.parse(JSON.stringify(this.List))
JSON.stringify()有一些局限,比如不能拷贝function,详见:[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)
es6实现数组深拷贝
let arr1 = [1,2,3] //原数组
let [ ...arr2 ] = arr1 //新数组
这样对新数组arr2进行操作时便不会更改原数组arr1的内容.
浅拷贝对指针的拷贝,拷贝后两个指针指向同一个内存空间,改变一个数组会同时改变另一个数组。
深拷贝对指针和指针指向的内容都进行拷贝,深拷贝后的两个数组完全独立,存储在不同的地址。

浙公网安备 33010602011771号