js樹結構轉數組 扁平化 樹結構平鋪

tree數據扁平化

/**
* tree數據扁平化
* 添加深度
* 添加父級節點(不能添加,只能使用父節點ID,添加echart會爆棧)
*/
flatTree(data, treeMap = [], depth = 0) {
 if (!(data && data.length)) return;
 depth++;
 return data.reduce((acc, cur) => {
   cur.depth = depth;
   acc.push(cur);
   if (cur.children && cur.children.length) {
     this.flatTree(cur.children, treeMap, depth);
   }
   return acc;
 }, treeMap);
}

tree 鋪平方法

// tree 鋪平方法
const getNodeMap = (node, parentNode) => {
  node.parentNode = parentNode;
  const nodeMap = [node];
  if (node.children && node.children.length) {
    node.children.forEach(item => nodeMap.push(...getNodeMap(item, node)));
  }
  return nodeMap;
};

export const getTreeMap = tree => {
  if (!(tree instanceof Array)) return;
  const treeMap = [];
  tree.forEach(node => {
    treeMap.push(...getNodeMap(node, tree));
  });
  return treeMap;
};

獲取樹結構下某個字段的集合

const getProvilegeCode = data => {
  return data.reduce((acc, { resourceCode, children }) => {
    acc.push(resourceCode);
    if (children && children.length) acc.push(...getProvilegeCode(children));
    return acc;
  }, []);
};
const mutations = {
  updatePrivilege(state, data) {
    if (!(data.privilegeList && data.privilegeList.length)) return;
    state.privilegeCode = getProvilegeCode(data.privilegeList);
  }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章