let arr = [
2, 3, NaN, [4, 5, 6], { name: “Tom”, age: 12 }
]
function checkType(target) {
return Object.prototype.toString.call(target).slice(8, -1);
}
function deepClone(data) {
let type = checkType(data);
let obj;
if (type === “Array”) {
obj = [];
for (let i = 0; i < data.length; i++) {
obj.push(deepClone(data[i]));
}
} else if (type === “Object”) {
obj = {};
for (const iterator in data) {
if (data.hasOwnProperty(iterator)) {
obj[iterator] = deepClone(data[iterator]);
}
}
} else {
return data;
}
return obj;
}
console.log(deepClone(arr))