UNPKG

yuxuannnn_utils

Version:
66 lines (65 loc) 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepClone = exports.getObjOrArrayType = void 0; /** * 判断是对象还是数组 * @param obj * @returns */ const getObjOrArrayType = (obj) => { if (typeof obj !== 'object') { return undefined; } const type = Object.prototype.toString.call(obj); if (type === '[object Object]') { return 'object'; } else if (type === '[object Array]') { return 'array'; } return undefined; }; exports.getObjOrArrayType = getObjOrArrayType; const deepCloneArr = (arr) => { const result = []; for (let i = 0; i < arr.length; i++) { if (typeof arr[i] !== 'object') { result[i] = arr[i]; } else { result[i] = (0, exports.deepClone)(arr[i]); } } return result; }; const deepCloneObj = (obj) => { const result = {}; for (const prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { if (typeof obj[prop] !== 'object') { result[prop] = obj[prop]; } else { result[prop] = (0, exports.deepClone)(obj[prop]); } } } return result; }; /** * 深克隆对象 * @param obj * @returns */ const deepClone = (obj) => { if (typeof obj !== 'object') { return obj; } if ((0, exports.getObjOrArrayType)(obj) === 'object') { return deepCloneObj(obj); } if ((0, exports.getObjOrArrayType)(obj) === 'array') { return deepCloneArr(obj); } }; exports.deepClone = deepClone;