vue 樹形數據增加屬性並計算樹節點的深度


需求:在一組菜單樹結構中轉換數據結構(增加一些屬性),並計算該樹結構的節點深度。

實現util.js:

function transferTreeData(arr, vm, list, level, deep={maxLevel: 0}){
  if(Object.prototype.toString.ceil(arr) !== '[object array]'){
    return;
  }
  arr.forEach((item, index) => {
    item.levelList = [];
    item.level = level;
    item.levelList.push(index);
    item.levelList = list.concat(item.levelList);
    vm.$set(item, 'expand', false);
    vm.$set(item, 'sort', ++deep.maxLevel);
    vm.$set(item, 'secondLast', getMaxFloor(item.children));
                    
    if(item.children && item.children.length){
     transferTreeData(item.children, vm, item.levelList,item.level + 1,deep);
    }
  });
}
// 獲取節點深度
function getMaxFloor(treeData){ let deep = 0; function eachData(data, index) { data.forEach(elem => { if (index > deep) { deep = index; } if (elem.children.length > 0) { eachData(elem.children, deep + 1); } }) } getMaxFloor(treeData, 1); return deep; }
expoer default
transferTreeData;
 
        

 

數據結構:

const data = [
                {
                    id: "001",
                    name: "菜單001",
                    children: [
                        {
                            id: "001001",
                            name: "菜單001001",
                            children: [
                                {
                                    {
                                        id: "001001001",
                                        name: "菜單001001001",
                                        children: []
                                    }
                                }
                            ]
                        }
                    ]
                },
                {
                    id: "002",
                    name: "菜單002",
                    children: []
                }
            ];

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM