1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
function deepClone(obj = {}, map = new Map()) { if (typeof obj !== "object") { return obj; }
if (map.get(obj)) { return map.get(obj); }
let result = {}; if (obj instanceof Array || Object.prototype.toString === "[object Array]") { result = []; } map.set(obj, result); for (const key in obj) { if (obj.hasOwnProperty(key)) { result[key] = deepClone(obj[key], map); } } return result; }
|