Public
Edited
Dec 23, 2020
Importers
1 star
Insert cell
Insert cell
deepClone = function deepClone(value, seen = new WeakMap()) {
// if primitive, return without cloning
if (value !== Object(value)) return value;
// if circular, return object reference
if (seen.has(value)) return seen.get(value);

let result;
try {
result = new value.constructor();
} catch {
result = Object.create(Object.getPrototypeOf(value));
}

if (typeof value === "function")
result = function(...args) {
return value.apply(this, args);
};

seen.set(value, result);

for (const key of Object.keys(value)) {
result[key] = deepClone(value[key], seen);
}

return result;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more