JS数组复制(克隆)

来源:互联网 发布:python 指数函数 编辑:程序博客网 时间:2024/04/30 02:47

JS数组复制

今天在实现js的数组操作时发现,JS的复杂数据类型都是使用内存地址的复制,来实现新对象的创建和赋值的。
所以改变新的对象会影响源对象的值,这在某些情况下不是我们所希望的结果。

例如

var a = [1,2,3];var b = a;b = [1,2]console.log(a); // [1,2]

所以在JS中想要创建一个新的数组,并对该数组进行操作时,不能简单的使用=进行赋值。

解决方法:

1、利用concat
array.concat()函数会连接两个数组,并创建一个新数组接受结果进行返回

var a = [1,2,3];var b = a.concat();b = [1,2];console.log(a); // [1,2,3]

2、利用slice
array.slice()函数会筛选原数组的一个子数组,创建一个新的数组接受结果后返回

var a = [1,2,3];var b = a.slice(0); // 省略第二个参数代表从start开始一直筛选到数组末尾var b = [1,2];console.log(a); // [1,2,3]
0 0
原创粉丝点击