数组的深浅拷贝

2017-05-31  本文已影响13人  Allan要做活神仙
var a = [1,2,3];
var b = a;
b[0] = 5;
console.log(a,b);    // [5,2,3],[5,2,3]

像上面直接赋值的方式就是浅拷贝,但很多时候这并不是我们想要的结果,其实我们想要的是a数组不变,不是吗?

方法1:slice函数

对于array对象的slice函数,返回一个数组的一段。(仍为数组)
arrayObj.slice(start, [end])

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

方法二:concat方法

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

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

荆轲刺秦王

上一篇下一篇

猜你喜欢

热点阅读