常用的封裝的方法

一.關於數組的扁平化

export const flattenTree = (data, childKey = "children") => {
    return data.reduce((arr, item) => {
        if (item[childKey] && item[childKey].length > 0) {
            return arr.concat([item], flattenTree(item[childKey]))
        }
        return arr.concat([item])
    }, [])
}
補充,將扁平化的數組變成一個對象,以他的id爲鍵(業務場景:角色權限)
const menuIds = data.data || [];
const treeData = flattenTree(this.treeData);
const treeObject = keyBy(treeData, "id");

//得到所有沒有子節點的item
let newMenuIds = [];
menuIds.forEach(menuId => {
  const menuItem = treeObject[menuId] || {};
  if (menuItem.children && menuItem.children.length > 0) {
      return;
  }
  newMenuIds.push(menuId);
});
//得到剩下的父節點
this.half = menuIds.filter(item => !newMenuIds.includes(item));
//注意將得到的剩下的父節點也傳遞到tree中,這樣即使不修改tree中的內容,也能讓父節點進行提交

 

發佈了22 篇原創文章 · 獲贊 2 · 訪問量 2730
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章