yuxuannnn_utils
Version:
66 lines (65 loc) • 1.69 kB
JavaScript
;
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;