美文网首页
数组的深浅拷贝

数组的深浅拷贝

作者: Allan要做活神仙 | 来源:发表于2017-05-31 08:49 被阅读13次
    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]
    

    荆轲刺秦王

    相关文章

      网友评论

          本文标题:数组的深浅拷贝

          本文链接:https://www.haomeiwen.com/subject/fdudfxtx.html