关于数据(对象、数组)的深克隆方法

关于数据的深克隆方法


随便写写,实际克隆对象类型请自行用typeofObject.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;
    }
}

待……


维尼聚合工具

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页