js--数组复制

wallhaven-y8mvpg.png

1. slice()方法

  slice() 方法可从已有的数组中返回选定的元素。
  arrayObject.slice(start,end)
  // start  : 输入的是下标值  从下标值开始 截取 到 end 结束位置停止

2. concat()方法

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

var arr1 = [{"name":"weifeng"},{"name":"boy"}];//原数组
var arr2 = [].concat(arr1);//拷贝数组

3.使用 JSON.stringifyJSON.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的内容.

浅拷贝对指针的拷贝,拷贝后两个指针指向同一个内存空间,改变一个数组会同时改变另一个数组。

深拷贝对指针和指针指向的内容都进行拷贝,深拷贝后的两个数组完全独立,存储在不同的地址。

posted @ 2023-02-02 10:58  过好每一天2022  阅读(476)  评论(0)    收藏  举报