如何通过递归统计树形结构的各个节点的子节点数量

发布于 2022-09-13 01:08:24 字数 669 浏览 33 评论 0

有一个树形结构的数据,想要统计它的各个节点的子节点数量,这个应该怎么弄啊?那位大佬帮帮忙啊?
数据结构类似于

const data=[
  {
    id: "z234s-sd232-dd423",
    title: "中华人民共和国",
    parentId: "",
    children: [
      {
        id: "gsd23-dds31-dll42",
        title: "贵州省",
        parentId: "z234s-sd232-dd423",
        children: [
          {
            id: "gy023-87sd2-33dw2",
            title: "贵阳市",
            parentId: "gsd23-dds31-dll42",
          },
        ],
      },
      {
        id: "fj873-ops23-ys7ds",
        title: "福建省",
        parentId: "z234s-sd232-dd423",
      },
    ],
  },
];

需要通过递归的方式在各个节点上添加一个属性childCount,然后这个childCount的值是该节点的所有子节点数量之和.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

唔猫 2022-09-20 01:08:24
const data=[
  {
    id: "z234s-sd232-dd423",
    title: "中华人民共和国",
    parentId: "",
    children: [
      {
        id: "gsd23-dds31-dll42",
        title: "贵州省",
        parentId: "z234s-sd232-dd423",
        children: [
          {
            id: "gy023-87sd2-33dw2",
            title: "贵阳市",
            parentId: "gsd23-dds31-dll42",
          },
        ],
      },
      {
        id: "fj873-ops23-ys7ds",
        title: "福建省",
        parentId: "z234s-sd232-dd423",
      },
    ],
  },
];
// 设置每个节点的统计字段,并返回所有节点总数。
var toTreeCount = (data=[], countField='count')=>data.reduce((total,cur)=>(total+(cur[countField] = toTreeCount(cur.children||[], countField))),data.length);
console.log(toTreeCount(data,'childCount'),data);

image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文