当前位置: 代码迷 >> 综合 >> js生成树
  详细解决方案

js生成树

热度:25   发布时间:2024-01-26 14:13:35.0
// 生成树:
// id,id_column id对应字段,p_id,p_id_column 父节点字段
// id=json[id_column],p_id=json[p_id_column],p_id = idfunction getNodes(list, key_column, key_value) {const newList = []list.forEach(item => {// 获取id=key_value的子节点时,key_column=p_id_columnif (item[key_column] === key_value) {newList.push(item)}})return newList
}/*** 生成树* getTree(this.$store.getters.permissions,'type',-1,'id','parentId')* @param list* @param key_column* @param key_value* @param id_column 如menu的是 id* @param p_id_column 父节点字段,如menu的是 parentId* @returns {Array}*/
export function getTree(list, key_column, key_value, id_column, p_id_column) {const newList = []if (key_value != null && key_value != undefined && list && list instanceof Array && list.length > 0) {// 先根据条件获取父节点集合。如 菜单权限树,父节点的条件为 type === -1const parentNodes = getNodes(list, key_column, key_value)// 遍历获取父节点子节点parentNodes.forEach(item => {item.children = getTree(list, p_id_column, item[id_column], id_column, p_id_column)newList.push(item)})}return newList
}

 

  相关解决方案