javascript - 如何处理JSON树?

标签 javascript arrays json object ecmascript-6

我有一棵像这样的树:

{
  "nodes": [
    {
      "id":1,
      "children":[
        {
          "id":3,
          "children":[
            {"id":4, "children":[]},
            {"id":5, "children":[{"id":6, "children":[]}]}
          ]
        },
        {"id":2, "children":[]}
      ]
    }
  ]
}

如何解析这棵树,将 children 内的每个 node 插入一个新数组?我想我需要递归地解析它。你能帮忙吗?

输出应该是这样的:

let array = [
  {"id":1},
  {"id":2},
  {"id":3},
  {"id":4},
  {"id":5},
  {"id":6},
]

最佳答案

您可以采用迭代和递归方法。如果您想获得有序的结果,您可以添加排序。

function getValues(array) {
    return array.reduce((r, { id, children }) => [...r, { id }, ...getValues(children)], []);
}

var data = { nodes: [{ id: 1, children: [{ id: 3, children: [{ id: 4, children: [] }, { id: 5, children: [{ id: 6, children: [] }] }] }, { id: 2, children: [] }] }] };

console.log(getValues(data.nodes));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何处理JSON树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557350/

相关文章:

java - Gson获取类中的json变量

javascript - 如何使用唯一键在 Firebase 数据库中添加数据,然后使用唯一键获取数据?

javascript - 专注于位于 vuejs 中另一个组件内的输入?

javascript - 为什么node.js中的mysql多语句选项会增加SQL注入(inject)的范围?

java - 从 Android Java 代码的 php Json 结果中删除结尾 [ 和 ]

c - 从左到右移动字符数组

javascript - 在循环内连接 html 标签

javascript - 将 websocket 与 Thin 结合使用

android - 将 JSONObject 转换为 ContentValues

javascript - 根据第二个 .then 的条件从第一个 .then 获取数据