Skip to content

cloneDeep

Import from @varavel/vdl-plugin-sdk/utils/objects.

function cloneDeep<T>(obj): T;

Creates a deep clone of the given object.

Type Parameters

Type Parameter Description
T The type of the object.

Parameters

Parameter Type Description
obj T The object to clone.

Returns

T

  • A deep clone of the given object.

Examples

// Clone a primitive values
const num = 29;
const clonedNum = cloneDeep(num);
console.log(clonedNum); // 29
console.log(clonedNum === num); // true
// Clone an array
const arr = [1, 2, 3];
const clonedArr = cloneDeep(arr);
console.log(clonedArr); // [1, 2, 3]
console.log(clonedArr === arr); // false
// Clone an array with nested objects
const arr = [1, { a: 1 }, [1, 2, 3]];
const clonedArr = cloneDeep(arr);
arr[1].a = 2;
console.log(arr); // [1, { a: 2 }, [1, 2, 3]]
console.log(clonedArr); // [1, { a: 1 }, [1, 2, 3]]
console.log(clonedArr === arr); // false
// Clone an object
const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] };
const clonedObj = cloneDeep(obj);
console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] }
console.log(clonedObj === obj); // false
// Clone an object with nested objects
const obj = { a: 1, b: { c: 1 } };
const clonedObj = cloneDeep(obj);
obj.b.c = 2;
console.log(obj); // { a: 1, b: { c: 2 } }
console.log(clonedObj); // { a: 1, b: { c: 1 } }
console.log(clonedObj === obj); // false