UNPKG

1.1 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var toString = Object.prototype.toString;
4function cloneDeep(value) {
5 return cloneDeepHelper(value, new Map());
6}
7exports.cloneDeep = cloneDeep;
8function cloneDeepHelper(val, seen) {
9 switch (toString.call(val)) {
10 case "[object Array]": {
11 if (seen.has(val))
12 return seen.get(val);
13 var copy_1 = val.slice(0);
14 seen.set(val, copy_1);
15 copy_1.forEach(function (child, i) {
16 copy_1[i] = cloneDeepHelper(child, seen);
17 });
18 return copy_1;
19 }
20 case "[object Object]": {
21 if (seen.has(val))
22 return seen.get(val);
23 var copy_2 = Object.create(Object.getPrototypeOf(val));
24 seen.set(val, copy_2);
25 Object.keys(val).forEach(function (key) {
26 copy_2[key] = cloneDeepHelper(val[key], seen);
27 });
28 return copy_2;
29 }
30 default:
31 return val;
32 }
33}
34//# sourceMappingURL=cloneDeep.js.map
\No newline at end of file