vue 递归函数 筛选出所有子集id

let ids = []
let data = [
    {
        title: '一级',
        id: 1,
        children: [
            {
                id: 3,
                title: '二级',
                children: [
                    {id: 7, title: '三级'},
                    {
                        id: 8,
                        title: '三级',
                        children: [
                            {id: 7, title: '四级'},
                            {id: 8, title: '四级'}
                            ...
                        ]
                    }
                ]
            },
            {
                id: 4,
                title: '二级',
                children: [
                    {id: 9, title: '三级'},
                    {id: 10, title: '三级'}
                ]
            }
        ]
    },
    {
        title: '一级',
        id: 2,
        children: [
            {
                id: 5,
                title: '二级',
                children: [
                    {id: 11, title: '三级'},
                    {id: 12, title: '三级'}
                ]
            },
            {
                id: 6,
                title: '二级',
                children: [
                    {id: 13, title: '三级'},
                    {id: 14, title: '三级'}
                ]
            }
        ]
    }
]

this.getAllId(ids, data.children)

// 递归 获取所有children的id
getAllId (keys, dataList) {
   if (dataList && dataList.length) {
      for (let i = 0; i < dataList.length; i++) {
         keys.push(dataList[i].id)
         if (dataList[i].children) {
            keys = this.getAllId(keys, dataList[i].children)
          }
       }
    }

    return keys
},

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设你有一个树形结构的数据,其中每个节点有一个唯一的ID和一个parentID表示它的父节点ID。你可以使用递归算法来找到该节点的所有父节点。 首先,你需要定义一个函数来找指定节点的父节点。该函数将接收一个节点ID和树形数据作为参数。它将遍历整个树形结构,找与该节点ID匹配的节点,并返回其父节点ID。 ``` function findParentNodeId(nodeId, treeData) { for (let i = 0; i < treeData.length; i++) { const node = treeData[i]; if (node.id === nodeId) { return node.parentId; } if (node.children) { const parentId = findParentNodeId(nodeId, node.children); if (parentId) { return parentId; } } } return null; } ``` 接下来,你可以使用该函数来找指定节点的所有父节点。你可以定义一个递归函数,该函数将接收一个节点ID和树形数据作为参数,并使用findParentNodeId()函数来找其父节点。如果找到父节点,则将其ID存储在一个数组中,并递归调用该函数,直到找到所有父节点为止。 ``` function findParentNodes(nodeId, treeData) { const parentNodes = []; let parentId = findParentNodeId(nodeId, treeData); while (parentId !== null) { parentNodes.push(parentId); parentId = findParentNodeId(parentId, treeData); } return parentNodes; } ``` 现在,你可以使用findParentNodes()函数来找指定节点的所有父节点。例如,假设你有以下树形数据: ``` const treeData = [ { id: 1, parentId: null, children: [ { id: 2, parentId: 1 }, { id: 3, parentId: 1 }, { id: 4, parentId: 1, children: [ { id: 5, parentId: 4 }, { id: 6, parentId: 4 }, ], }, ], }, ]; ``` 如果你想找到节点5的所有父节点,可以使用以下代码: ``` const parentNodes = findParentNodes(5, treeData); console.log(parentNodes); // [4, 1] ``` 这将返回一个包含节点4和1的数组,表示节点5的所有父节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值