🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
* **平扁化,解决flat()兼容问题** ***** ``` export function flattenDeep(arr = []) { return arr.reduce((acc, val) =>Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []) } ``` * **深拷贝** ***** 了解更多,请点击[这里](https://www.kancloud.cn/vvmily_king/vvmily/2306112) ``` export function deepClone(obj) { var newObj = Array.isArray(obj) ? [] : {}; for(var key in obj){ if(obj[key] && typeof obj[key] === 'object'){ newObj[key] = deepClone(obj[key]) }else{ newObj[key] = obj[key] } } return newObj; } ``` * **解析URL中的参数** ``` export const parseUrlParams =(params) => { let url = params.substring(params.indexOf("?")); //获取url中"?"符后的字串 let result = {}; if (url.indexOf("?") !=-1) { let str = url.substr(1); let strs = str.split("&"); for (leti = 0; i < strs.length; i++) { result[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return result; } ``` * **一维数组转树结构** ``` /**  * 一维数组转树结构  * @param {*} data 一维数组  * @param {*} id 当前id  * @param {*} pid 父级关联id  * @param {*} children 子级数组键  * @returns 树形Array  */ export function toTree(   data,   id = 'menuId',   pid = 'parentId',   children = 'children' ) {   const result = []   if (!Array.isArray(data)) {     return result   }   data.forEach(item => {     delete item[children]   })   const map = {}   data.forEach(item => {     map[item[id]] = item   })   data.forEach(item => {     const parent = map[item[pid]]     item.parentName = (parent || {}).menuName     item.parentId = (parent || {}).menuId     if (parent) {       (parent[children] || (parent[children] = [])).push(item)     } else {       result.push(item)     }   })   return result } ``` * **查找数组树形数组一级最后一级的第一项** ``` /**  * 查找数组树形数组一级最后一级的第一项  * @param {*} arr 树形数组  * @param {*} children 树下级  * @returns Array  */ export function arrayFirstById(arr = [], children = 'children') {   return arr.reduce((pre, cur) => {     pre.push(cur)     return pre.concat(       cur[children] && cur[children].length ? arrayFirstById(cur[children]) : []     )   }, []) } ``` * **查找树结构,当前id的所有上级id** ``` /**  * 从下往上查找  * 查找树结构,当前id的所有上级id  * @param {*} treeData 树结构 数组,必传  * @param {*} id 当前id ,必传  * @param {*} key 与id相匹配的键  * @param {*} children 树结构下级  * @returns Array  */ export function findTreeParents(   treeData,   id,   key = 'id',   children = 'children' ) {   if (treeData.length === 0) return   for (let i = 0; i < treeData.length; i++) {     if (treeData[i][key] === id) {       return []     } else {       if (treeData[i][children]) {         const res = findTreeParents(treeData[i][children], id)         if (res !== undefined) {           return res.concat(treeData[i])         }       }     }   } } ``` * **找树结构,当前id的所有上级id** ``` /**  * 通过子级parentId与父级id相对应,从上往下查找  * 找树结构,当前id的所有上级id  * @param {*} treeData 树结构 数组,必传  * @param {*} id 当前id ,必传  * @param {*} option 配置项  * @returns Array  */ export function treeFindParentById(treeData, id, option) {   const { key, children, parentId } = {     key: 'id',     children: 'children',     parentId: 'parentId',     ...option   }   const allParents = []   if (treeData.length === 0) {     return []   }   const findParents = (data, id) => {     if (!id) return     data.forEach((item, index) => {       if (item[key] === id) {         allParents.unshift(item)         findParents(treeData, item[parentId])       } else {         if (item.children) {           findParents(item[children], id)         }       }     })   }   findParents(treeData, id)   return allParents } ``` 工具类验证:https://www.helloweba.net/javascript/639.html