[basic] deepClone
parent
502d2b9b28
commit
89a0abcbaf
@ -0,0 +1,40 @@
|
||||
// JSON.parse(JSON.stringify(obj))
|
||||
// structuredClone(obj)
|
||||
// _.cloneDeep(obj);
|
||||
|
||||
const obj = {
|
||||
name: "Vasily",
|
||||
addres: {
|
||||
citi: "Saint",
|
||||
street: "Vilnizki",
|
||||
},
|
||||
};
|
||||
|
||||
const obj2 = Object.assign({}, obj);
|
||||
const obj3 = structuredClone(obj);
|
||||
|
||||
// console.log("shallow: ", obj.addres === obj2.addres);
|
||||
// console.log("deepclone: ", obj.addres === obj3.addres);
|
||||
//
|
||||
// recursive implementation cloneDeep
|
||||
|
||||
function deepClone(value: any) {
|
||||
if (typeof value !== "object" || value === null) {
|
||||
return value;
|
||||
}
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
return value.map((item) => deepClone(item));
|
||||
}
|
||||
|
||||
const objEntries = Object.entries(value).map(([key, value]) => [
|
||||
key,
|
||||
deepClone(value),
|
||||
]);
|
||||
|
||||
return Object.fromEntries(objEntries);
|
||||
}
|
||||
|
||||
const obj4 = deepClone(obj);
|
||||
|
||||
console.log("deepclone(): ", obj.addres === obj4.addres);
|
||||
Loading…
Reference in New Issue