Skip to content

Instantly share code, notes, and snippets.

@korokd
Forked from cassaram09/deepClone.js
Last active January 14, 2020 17:14
Show Gist options
  • Save korokd/8615e3f222a9e71201cae0c103397cf0 to your computer and use it in GitHub Desktop.
Save korokd/8615e3f222a9e71201cae0c103397cf0 to your computer and use it in GitHub Desktop.
JavaScript deep clone function
function cloneDeep(objSource) {
if (objSource instanceof Date) {
return new Date(objSource);
}
const plainObject = {};
if (!(objSource instanceof Object) || objSource instanceof String) {
return objSource;
}
const objClone = Array.isArray(objSource) ? [] : plainObject;
Object.entries(objSource).forEach(([key, value]) => {
let vValue = value;
if (typeof value === typeof plainObject) {
vValue = cloneDeep(value);
}
objClone[key] = vValue;
});
return objClone;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment