json取值

https://img2.mukewang.com/5c7a3fdc00011eb708000306.jpg

在不确定层级关系的情况下 这种数据格式 我怎么能够取到 isLeaf: true 的这个label
可以知道它的value

慕容森
浏览 433回答 1
1回答

慕神8447489

看这个数据,叶节点应该不少。如果不允许非空父节点的话,每个看得见的父节点下至少会有一个叶节点。所以你是要找第一个叶节点呢,还是要找所有叶节点呢?这里提供一个找所有叶节点的方法,没用递归,用的广度遍历(相关阅读:使用递归遍历并转换树形数据,这里面也讲了广度)。这里采用 ES2015 的 generator 语法实现function findLeaves(roots) {    const queue = [...roots];    function* next() {        while (true) {            const node = queue.shift();            if (!node) {                return;            }            if (node.children && node.children.length) {                queue.push(...node.children);            }            yield node;        }    }    return Array.from(next())        // 这里就已经取到了所有的叶节点        .filter(node => !node.isLeaf)        // 这里进一步取到了所有叶节点的 value 值,        // 反正节点都在,想要什么值都可以取得到了        .map(node => node.value);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript