dom树的广度优先遍历

有时候对dom树要逐层进行处理,这时就要用到广度优先遍历。思路是对所有的父节点进行遍历,将他们的子节点全部保存进一个数组当中,对数组处理完毕后,递归调用数组。
例如要找出每层子节点最多的节点返回,可以这样写:

const findMostCount = dom => {
            let r = [];
            const find = domArr => {
                let children = [];
                let most = 0;
                domArr.forEach((item, idx) => {
                 if (item.childElementCount > most) 
                       most = item.childElementCount;
                 children.push(...item.children);
                });
                r.push(most);
                if (children.length) find(children);
            };
            find([dom]);
            return r;
        };

将每一层看做一个数组,然后逐层进行遍历,将children取出保存,同时取出子节点数最多的节点,当子节点数组不为空时,递归调用。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容