企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 浅拷贝 有时候我们只是想备份数组,但是只是简单让它赋给一个变量,改变其中一个,另外一个就紧跟着改变,但很多时候这不是我们想要的 ~~~ var arr = [1, 2, 3, '4']; var arr2 = arr; arr2[1] = "test"; console.log(arr); // [1, "test", 3, "4"] console.log(arr2); // [1, "test", 3, "4"] ~~~ ## 深拷贝 1.`for` for循环是非常好用的。如果不知道高级方法,通过for循环能够完成我们大多数的需求。 ~~~ var arr = [1,2,3,4,5] var arr2 = copyArr(arr) function copyArr(arr) { let res = [] for (let i = 0; i < arr.length; i++) { res.push(arr[i]) } return res } ~~~ 我们可以使用slice() 和 concat() 方法 2.`slice ` ~~~ var arr = ['a', 'b', 'c']; var arrCopy = arr.slice(0); arrCopy[0] = 'test' console.log(arr); // ["a", "b", "c"] console.log(arrCopy); // ["test", "b", "c"] ~~~ 3.`concat` ~~~ var arr = ['a', 'b', 'c']; var arrCopy = arr.concat(); arrCopy[0] = 'test' console.log(arr); // ["a", "b", "c"] console.log(arrCopy); // ["test", "b", "c"] ~~~ * arrayObj.slice(start, [end]) 该方法返回一个 Array 对象,其中包含了 arrayObj 的指定部分。不会改变原数组 * arrayObj.concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 4`...` ~~~ var arr = [1,2,3,4,5] var [ ...arr2 ] = arr arr[2] = 5 console.log(arr) console.log(arr2) ~~~ ![](https://box.kancloud.cn/b0a4c316cbefdcb338850aa93e4e06f1_320x153.png)