常用的封装的方法

一.关于数组的扁平化

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章