train/web/public/js/tool.js

74 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2024-01-21 18:30:43 +08:00
Tool = {
/**
* 空校验 null或""都返回true
*/
isEmpty: (obj) => {
if ((typeof obj === 'string')) {
return !obj || obj.replace(/\s+/g, "") === ""
} else {
return (!obj || JSON.stringify(obj) === "{}" || obj.length === 0);
}
},
/**
* 非空校验
*/
isNotEmpty: (obj) => {
return !Tool.isEmpty(obj);
},
/**
* 对象复制
* @param obj
*/
copy: (obj) => {
if (Tool.isNotEmpty(obj)) {
return JSON.parse(JSON.stringify(obj));
}
},
/**
* 使用递归将数组转为树形结构
* 父ID属性为parent
*/
array2Tree: (array, parentId) => {
if (Tool.isEmpty(array)) {
return [];
}
const result = [];
for (let i = 0; i < array.length; i++) {
const c = array[i];
// console.log(Number(c.parent), Number(parentId));
if (Number(c.parent) === Number(parentId)) {
result.push(c);
// 递归查看当前节点对应的子节点
const children = Tool.array2Tree(array, c.id);
if (Tool.isNotEmpty(children)) {
c.children = children;
}
}
}
return result;
},
/**
* 随机生成[len]长度的[radix]进制数
* @param len
* @param radix 默认62
* @returns {string}
*/
uuid: (len, radix = 62) => {
const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
const uuid = [];
radix = radix || chars.length;
for (let i = 0; i < len; i++) {
uuid[i] = chars[0 | Math.random() * radix];
}
return uuid.join('');
}
};