Skip to content

根据指定id递归树查到指定节点

javascript
// 定义数据
const data = [
    {
        "parentId": 0,
        "children": [],
        "id": 5,
        "name": "等级测试"
    },
    {
        "parentId": 0,
        "children": [],
        "id": 102,
        "name": "山口组"
    },
    {
        "parentId": 0,
        "children": [
            {
                "parentId": 100,
                "children": [
                    {
                        "parentId": 101,
                        "children": [],
                        "id": 146,
                        "name": "天天"
                    },
                    {
                        "parentId": 101,
                        "children": [],
                        "id": 149,
                        "name": "宁次"
                    }
                ],
                "id": 101,
                "name": "周杰伦组-A"
            },
            {
                "parentId": 100,
                "children": [],
                "id": 126,
                "name": "小李"
            },
            {
                "parentId": 100,
                "children": [],
                "id": 145,
                "name": "我爱罗"
            },
            {
                "parentId": 100,
                "children": [],
                "id": 147,
                "name": "迈特凯"
            }
        ],
        "id": 100,
        "name": "重案组"
    }
];

// 递归查找函数
function findCategoryById(data, targetId) {
    for (const item of data) {
        if (item.id === targetId) {
            return item;
        }
        if (item.children && item.children.length > 0) {
            const result = findCategoryById(item.children, targetId);
            if (result) {
                return result;
            }
        }
    }
    return null;
}

// 查找 id 为 101 的数据
const result = findCategoryById(data, 101);
console.log(result);

基于 MIT 许可发布