为了账号安全,请及时绑定邮箱和手机立即绑定

json取值

json取值

慕容森 2019-02-27 21:17:20
在不确定层级关系的情况下 这种数据格式 我怎么能够取到 isLeaf: true 的这个label值可以知道它的value值
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

看这个数据,叶节点应该不少。如果不允许非空父节点的话,每个看得见的父节点下至少会有一个叶节点。所以你是要找第一个叶节点呢,还是要找所有叶节点呢?

这里提供一个找所有叶节点的方法,没用递归,用的广度遍历(相关阅读:使用递归遍历并转换树形数据,这里面也讲了广度)。这里采用 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);

}


查看完整回答
反对 回复 2019-03-02
  • 1 回答
  • 0 关注
  • 432 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信