deepCopy

99 阅读1分钟

deepCopy

function deepCopy(obj, mapFn) {
    const newobj = Array.isArray(obj) ? [] : {};
    const type = new Set([
        "number",
        "string",
        "boolean",
        "function",
        undefined,
        null,
    ]);

    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            if (type.has(typeof obj[key]) || type.has(obj[key])) {
                newobj[key] = obj[key];
            } else {
                newobj[key] = deepCopy(obj[key], mapFn);
            }

            if (mapFn) {
                newobj[key] = mapFn(newobj[key], key, obj);
            }
        }
    }
    return newobj;
}