关于数据的
深克隆
方法
随便写写,实际克隆对象类型请自行用
typeof
或Object.prototype.toString.call
判断,你可以将下面的方法封装
持续更新,时间间隔以年为位
1、基本数据类型
用赋值运算符 = 就可以了
2、引用数据类型
2.1 数组
2.1.1、使用循环
public deepClone(data) {
let arr = [];
for (let i = 0; i < data.length; i++) {
arr.push(data[i]);
}
return arr;
}
2.1.2、concat
public deepClone(data) {
let arr = data.concat([]);
return arr;
}
2.1.3、JSON.stringify和JSON.parse
public deepClone(data) {
return JSON.parse(JSON.stringify(data));
}
2.1.4、es6语法,数组克隆
public deepClone(data) {
let arr = [...data];
// let [...arr] = data;
// let [...arr] = [...data];
return arr;
}
3、封装所有类型的方法
public clone(obj: any) {
let tempObj: any;
if (obj instanceof Array) {
tempObj = [];
var i = obj.length;
while (i--) {
tempObj[i] = this.clone(obj[i]);
}
return tempObj;
} else if (obj instanceof Object) {
tempObj = {};
for (var k in obj) {
tempObj[k] = this.clone(obj[k]);
}
return tempObj;
} else {
return obj;
}
}
待……