js 通过filter 实现扁平化数据tree

 

第二种:

let data= [
    {
        "id": 100,
        "parentId": 0,
        "isLeaf": "0",
        "level": 1,
        "code": "taskAnalyse",
        "name": "数据机构",
        "canEdit": "0"
    },
    {
        "id": 101,
        "parentId": 100,
        "isLeaf": "1",
        "level": 2,
        "code": "module",
        "name": "数据机构2",
        "canEdit": "1"
    },
    {
        "id": 102,
        "parentId": 100,
        "isLeaf": "1",
        "level": 2,
        "code": "task",
        "name": "数据机构3",
        "canEdit": "1"
    },
    {
        "id": 103,
        "parentId": 100,
        "isLeaf": "1",
        "level": 2,
        "code": "fid",
        "name": "1.3 确定典型任务",
        "canEdit": "1"
    },
    {
        "id": 200,
        "parentId": 0,
        "isLeaf": "0",
        "level": 1,
        "code": "competencyAnalyse",
        "name": "二绘制能力图谱",
        "canEdit": "0"
    },
    {
        "id": 201,
        "parentId": 200,
        "isLeaf": "1",
        "level": 2,
        "code": "knowledge",
        "name": "2绘制知识图谱",
        "canEdit": "1"
    },

    {
        "id": 205,
        "parentId": 203,
        "isLeaf": "1",
        "level": 3,
        "code": "qualityLevel",
        "name": "数据机构11111",
        "canEdit": "1"
    },
    {
        "id": 206,
        "parentId": 203,
        "isLeaf": "1",
        "level": 3,
        "code": "qualityType",
        "name": "数据机构111111",
        "canEdit": "1"
    }
]

let _index = 0;

            for (let i = 0; i < arr.length - 1; i++) {

              //初始化类为small-title

              arr[i].className = "small-title"

              if(i>0){

                //当前arr[i].canEdit === '0' 下一组为arr[i + 1].canEdit === '1',设置当前arr[i].canEdit = '1'

                if (arr[i].canEdit === '0' && arr[i + 1].canEdit === '1') {

                  arr[i].canEdit = '1';

                 

                }

              }

              //获取最后canEdit == 1的

              if(arr[i].canEdit === '1'){

                _index = i;

              }

            }

            // canEdit == 1初始化最后一个为选中状态

            arr[_index].className = "bg-title";

始化最后一个为选中状态

            arr[_index].className = "bg-title";

function buildTree (data, parentId = 0) {

  return data.filter(item => item.parentId === parentId).map(item => ({

    ...item,

    childrenMenuList: buildTree(data, item.id)

  }));

}

 this.flowList = buildTree(data);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值