【发布时间】:2015-06-02 18:22:53
【问题描述】:
我有以下 JSON 数据:
[
{id: 1, indent: '1'},
{id: 2, indent: '1.1'},
{id: 3, indent: '1.2'},
{id: 4, indent: '2'},
{id: 5, indent: '2.1'},
{id: 6, indent: '2.2'},
{id: 7, indent: '2.2.1'},
{id: 8, indent: '1.2.1'},
{id: 9, indent: '3'},
]
我想把它转换成如下:
[
{id: 1, indent: '1', parent: null},
{id: 2, indent: '1.1', parent: 1},
{id: 3, indent: '1.2', parent: 1},
{id: 4, indent: '2', parent: null},
{id: 5, indent: '2.1', parent: 4},
{id: 6, indent: '2.2', parent: 4},
{id: 7, indent: '2.2.1', parent: 6},
{id: 8, indent: '1.2.1', parent: 3},
{id: 9, indent: '3', parent: null},
]
我可以通过 2 个外部和内部的 for 循环来实现这一点,但我正在寻找一些有效的方法来做到这一点。
ex:
forloop each node
get indent and check if dots ('.') are more than one
if true
for-loop the array and check for indent that start with the indent and ends with dot + 1
【问题讨论】:
-
不是顺便说一下 JSON,它只是 JavaScript 数据
-
@Kevin,我试过了,但我无法使用地图解决。
-
@JuanMendes,我们可以放心地假设它的 javascript 对象 :)
-
仅仅因为您将其隐藏在语言功能中并不意味着您将拥有少于 2 个循环。尝试使循环更高效如何?
标签: javascript json algorithm loops formatting