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(''); } };