From ea3613ef4315e4cfb3d786b5440b8739dc58994a Mon Sep 17 00:00:00 2001 From: Shaban-Eissa Date: Fri, 7 Jun 2024 15:45:35 +0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20IMPROVE:=20adding=20more=20examples?= =?UTF-8?q?=20to=20make=20the=20code=20more=20clear?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 63.create-cloneDeep.md | 90 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/63.create-cloneDeep.md b/63.create-cloneDeep.md index b13e328..7edc104 100644 --- a/63.create-cloneDeep.md +++ b/63.create-cloneDeep.md @@ -93,6 +93,96 @@ Let's break down the selected code: 8. Finally, the function returns the clone. +# + +### Real World Examples +```js +const array = [1, 2, 3, 4, 5]; + +const obj = { + a: 1, + b: { + c: 2, + d: 3, + }, +}; + +const circular = { + a: 1, +}; +circular.circular = circular; + +const deep = { + a: 1, + b: { + c: 2, + d: 3, + }, + e: { + f: { + g: 4, + }, + }, +}; + +const arrayClone = cloneDeep(array); +const objClone = cloneDeep(obj); +const circularClone = cloneDeep(circular); +const deepClone = cloneDeep(deep); + +console.log(arrayClone); // [1, 2, 3, 4, 5] +console.log(objClone); // { a: 1, b: { c: 2, d: 3 } } +console.log(circularClone); // { a: 1, circular: [Circular] } +console.log(deepClone); // { a: 1, b: { c: 2, d: 3 }, e: { f: { g: 4 } } } + +// The cloned object has a different reference. +console.log(array !== arrayClone); // true +console.log(obj !== objClone); // true +console.log(circular !== circularClone); // true +console.log(deep !== deepClone); // true + +// The nested object has a different reference. +console.log(obj.b !== objClone.b); // true +console.log(deep.b !== deepClone.b); // true +console.log(deep.e !== deepClone.e); // true +console.log(deep.e.f !== deepClone.e.f); // true + +// The circular reference is handled correctly. +console.log(circular === circular.circular); // true +console.log(circularClone === circularClone.circular); // true + +// The cloned object has the same value. +console.log(array.toString() === arrayClone.toString()); // true +console.log(JSON.stringify(obj) === JSON.stringify(objClone)); // true +console.log(circular === circular.circular); // true +console.log(JSON.stringify(deep) === JSON.stringify(deepClone)); // true + +// The cloned object has the same structure. +console.log(Object.keys(obj).toString() === Object.keys(objClone).toString()); // true +console.log(Object.keys(deep).toString() === Object.keys(deepClone).toString()); // true + +// The cloned object has the same nested structure. +console.log( + Object.keys(obj.b).toString() === Object.keys(objClone.b).toString() +); // true +console.log( + Object.keys(deep.b).toString() === Object.keys(deepClone.b).toString() +); // true +console.log( + Object.keys(deep.e).toString() === Object.keys(deepClone.e).toString() +); // true +console.log( + Object.keys(deep.e.f).toString() === Object.keys(deepClone.e.f).toString() +); // true + +// The cloned object has the same value. +console.log(obj.b.c === objClone.b.c); // true +console.log(deep.b.c === deepClone.b.c); // true +console.log(deep.e.f.g === deepClone.e.f.g); // true + +``` + + # ### Reference