前后端知识交流分享

数组的深拷贝

2019-02-13  本文已影响0人  Trytodo_zbs

写过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);
上一篇 下一篇

猜你喜欢

热点阅读