树结构,子节点是对象的方式,希望将对象转化成数组?(JS)

发布于 2022-09-13 01:14:31 字数 2120 浏览 20 评论 0

有这样一个树结构:希望通过一个函数,将key变一个field: key, children从对象变成数组的形式。

const revert = () => {
    ... 这个函数不知道怎么写
}
const revertResult = revert(tree)
const tree = {
  a: {
    name: "甲",
    children: {
      childA: {
        name: "乙",
        random: 1,
      },
      childB: {
        name: "丙",
        random: 2,
      },
      childC: {
        name: "丁",
        children: {
          childC1: {
            name: "末",
            random: 4,
          },
          childC2: {
            name: "担",
            random: 5,
          },
        },
      },
    },
  },
  b: {
    id: "张全蛋",
    name: "丑",
    children: {
      childA: {
        name: "张三",
        random: 5,
      },
      childB: {
        name: "李四",
        random: 5,
      },
      childC: {
        name: "王五",
        children: {
          childC1: {
            name: "李二蛋",
            random: 5,
          },
          childC2: {
            name: "张全蛋",
            random: 5,
          },
        },
      },
    },
  },
};

期望结果

const convertResult = [
  {
    id: "a",
    name: "甲",
    children: [
      {
        id: "childA",
        name: "乙",
        random: 1,
      },
      {
        id: "childB",
        name: "丙",
        random: 2,
      },
      {
        id: "childC",
        name: "丁",
        children: [
          {
            id: "childC1",
            name: "末",
            random: 4,
          },
          {
            id: "childC2",
            name: "担",
            random: 5,
          },
        ],
      },
    ],
  },
  {
    id: "b",
    name: "丑",
    children: [
      {
        id: "childA",
        name: "张三",
        random: 5,
      },
      {
        id: "childB",
        name: "李四",
        random: 5,
      },
      {
        id: "childC",
        name: "王五",
        children: [
          {
            id: "childC1",
            name: "李二蛋",
            random: 4,
          },
          {
            id: "childC2",
            name: "张全蛋",
            random: 5,
          },
        ],
      },
    ],
  },
];

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

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

发布评论

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

评论(1

柠北森屋 2022-09-20 01:14:31
const convert = data => data ? Object.entries(data).map(([ key, val ]) => ({
    id: key,
    ...val,
    children: convert(val.children)
})) : undefined
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文