lowcode-engine/packages/utils/clone-deep.ts
2020-03-27 14:01:27 +08:00

24 lines
520 B
TypeScript

import { isPlainObject } from './is-plain-object';
export function cloneDeep(src: any): any {
const type = typeof src;
let data: any;
if (src === null || src === undefined) {
data = src;
} else if (Array.isArray(src)) {
data = src.map(item => cloneDeep(item));
} else if (type === 'object' && isPlainObject(src)) {
data = {};
for (const key in src) {
if (src.hasOwnProperty(key)) {
data[key] = cloneDeep(src[key]);
}
}
} else {
data = src;
}
return data;
}