【发布时间】:2019-02-04 15:19:57
【问题描述】:
我目前使用一些 JSON,它必须以树状层次结构构建。层次的深度变化很大,因此是未知的。
就像现在一样,我已经获得了一个对象数组。示例如下。
[
{
"name": "level1",
"collapsed": true,
"children": [
{
"name": "Level 1 item here",
"id": 360082134191
}
]
},
{
"name": "level1",
"collapsed": true,
"children": [
{
"name": "level2",
"collapsed": true,
"children": [
{
"name": "Level 2 item here",
"id": 360082134751
}
]
}
]
},
{
"name": "level1",
"collapsed": true,
"children": [
{
"name": "Another level 1 item",
"id": 360082262772
}
]
}
]
我想要实现的是这些对象被合并,而不覆盖或替换任何东西。下面列出了我希望如何格式化数据的示例:
[
{
"name": "level1",
"collapsed": true,
"children": [
{
"name": "level2",
"collapsed": true,
"children": [
{
"name": "Level 2 item here",
"id": 360082134751
}
]
},
{
"name": "Level 1 item here",
"id": 360082134191
},
{
"name": "Another level 1 item",
"id": 360082262772
}
]
}
]
如何使用 JavaScript 实现这一点?没有库是首选,但是可以使用 ES6。
编辑: 输出是一个数组很重要,因为没有子项的项可以出现在根目录。
【问题讨论】:
-
为什么
"Level 1 item here"比"level2"来得晚? -
欢迎来到 Stack Overflow!请拨打tour,访问help center,并阅读asking good questions。在做了一些研究并searching 了解 SO 的相关主题之后,自己尝试一下。如果您遇到困难,请发布您的尝试Minimal, Complete, and Verifiable example,并准确记录您卡在哪里。人们会很乐意提供帮助。
-
我假设您正在合并
name。如果您尝试合并的节点具有不同的collapsed值,您会期待什么? -
@ScottSauyet 这不是问题,因为这是初始结构,因此它总是错误的! :-)
标签: javascript json ecmascript-6 treeview