es6遍历树结构并判断_使用递归遍历并转换树形数据(以 TypeScript 为例)

一个朋友问我应该怎么从一个树的 JSON 数组生成 HTML,使用 和 来构建页面元素。于是我简单的画了个树型结构图然后写了对应的模拟数据(JavaScript 对象)const data = {name: "A",nodes: [{ name: "B", nodes: [{ name: "F" }] },{ name: "C" },{name: "D",nodes: [{ name: "G"...
摘要由CSDN通过智能技术生成

一个朋友问我应该怎么从一个树的 JSON 数组生成 HTML,使用

  • 来构建页面元素。于是我简单的画了个树型结构图

    然后写了对应的模拟数据(JavaScript 对象)

    const data = {

    name: "A",

    nodes: [

    { name: "B", nodes: [{ name: "F" }] },

    { name: "C" },

    {

    name: "D",

    nodes: [

    { name: "G" },

    { name: "H" },

    { name: "I", nodes: [{ name: "J" }, { name: "K" }] }

    ]

    },

    { name: "E" }

    ]

    };

    最后写了一个递归,生成了 HTML 的树型结构。原本是用 JavaScript ES6 写的,为了表明数据结构,这里改用 TypeScript 来写:

    interface INode {

    name: string;

    nodes?: INode[];

    }

    function makeTree(roots: INode[]): JQuery {

    function makeNode(node: INode): JQuery {

    const $div = $("

    ").text(node.name || "");

    const $li = $("

  • ").append($div);

    if (node.nodes && node.nodes.length) {

    $li.append(makeNodeList(node.nodes));

    }

    return $li;

    }

    function makeNodeList(nodes: INode[]): JQuery {

    return nodes

    .map(child => makeNode(child))

    .reduce(($ul, $li) => {

    return $ul.append($li);

    }, $("

    • "));

    }

    return makeNodeList(roots);

    }

    效果还是蛮不错的

    然后朋友说没看明白,好吧,那我从头讲起

    遍历方法

    树形数据的遍历有两

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值