多维数组快速查找,不用递归,采用队列

1.算法代码

function findById(id,list) {
        let queue = [].concat(list);

        while (queue.length > 0) {
            const item = queue.shift();

            if (String(item.id) === String(id)) return item;

            if (item.children) queue = queue.concat(item.children);
        }

        return null;
}

2.调用

const list = [
                {
                    id: 1,
                    name: '数学',
                    children: [
                        {
                            id: 2,
                            name: '微积分',
                        },
                    ]
                },
                {
                    id: 8,
                    name: '政治',
                    children: [
                        {
                            id: 9,
                            name: '毛概',
                            children: [
                                {
                                    id: 10,
                                    name: '毛泽东思想'
                                }
                            ]
                        },
                    ]
                },
            ];

console.log(findById(10,list));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容