数组的深拷贝

作者: Trytodo_zbs | 来源:发表于2019-02-13 17:57 被阅读0次

写过vue的都知道,里面的任意赋值修改都可能会造成界面的修改
当我们不希望这种情况发生的时候我们就需要用到深拷贝

1.最简单也是最麻烦的方式
直接赋值是不可能的,使用循环for for in的方式可以实现
基础数据类型的赋值不会形成关联关系,可以达到目的

var a=[1,2,3,4,5];
var b=[];
for(let i=0,len=a.length;i<len;i++){
  b[i]=a[i];
}
console.log(b);
b[0]=666;
console.log(b);
console.log(a);

2.使用JOSN对象的parse和stringify方法

var a=[1,2,3,4,5];
var b=JSON.parse(JSON.stringify(a));
console.log(b);
b[0]=666;
console.log(b);
console.log(a);

3.使用Object对象的assign方法

var a=[1,2,3,4,5];
var b=Object.assign([],a);
console.log(b);
b[0]=666;
console.log(b);
console.log(a);

相关文章

网友评论

    本文标题:数组的深拷贝

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