JS根据子节点递归获取所有父节点的集合

2020-11-07  本文已影响0人  百里春秋1

//传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id

注意:data2必须是个对象,数组可以改写为{children: dataList, id: 0}

        findIdList(data2, id, level) {

            var arrRes = [];

            let rev = (data, id, level) => {

                if (!data) {

                    return;

                }

                for (var i = 0; i < data.children.length; i++) {

                    let item = data.children[i];

                    if (item.id == id) {

                        // 将匹配到的结果保存到数组

                        arrRes.unshift({level, activeId: item.id});

                        // 递归它的父级

                        rev(data2, data.id, 0);

                        break;

                    } else if (item.children && item.children.length > 0) {

                        //如果有子集,则把子集作为参数重新执行本方法

                        rev(item, id, level + 1);

                    }

                }

            };

            rev(data2, id, level);

            return arrRes;

        },

上一篇下一篇

猜你喜欢

热点阅读