tframe-utility
Version:
minimal unit of smpoo tframe platform
61 lines (57 loc) • 1.36 kB
JavaScript
// 对象深拷贝
let deepCopy = (obj) => {
let o = obj instanceof Array ? [] : {};
for (let k in obj) {
let val = obj[k];
if (typeof val === "object") {
o[k] = deepCopy(val);
} else {
o[k] = val;
}
}
return o;
};
/* 获取 JS 对象类型
* @obj:要判断类型的值
*/
let getJsObjectType = obj => {
let str = typeof obj;
if (str === 'object') {
if (Array.isArray(obj)) {
str = 'array';
} else if (obj instanceof Date) {
str = 'date';
} else {
str = 'object';
}
}
return str;
};
/*
* 在目标数组的指定位置之后进行插入
* @toArr:要被插入元素的目标数组
* @fromObj:要插入目标数组的数组或对象
* @index:目标数组即将被插入的索引位置,起始于0
* @reserve:是否保留原目标数组不变
*/
let arrInsert = (toArr, from, index, reserve = false) => {
let _arrTaget = [];
if (reserve) {
let [...toArrNew] = toArr;
_arrTaget = toArrNew;
} else {
_arrTaget = toArr;
}
let _isArr = Array.isArray(from);
let _arr1 = _arrTaget.splice(0, index + 1);
if (_isArr) {
return [..._arr1, ...from, ..._arrTaget];
} else {
return [..._arr1, from, ..._arrTaget];
}
};
module.exports = {
deepCopy,
getJsObjectType,
arrInsert
};