【发布时间】:2015-07-09 12:51:53
【问题描述】:
我想将对象列表“翻译”成 jstree 可食用的 json 格式:
data = [
{
"data" : {
"title" : "father",
"attr" : { "href" : "#" }
},
"children" : [
{
"data" : {
"title" : "Older Son",
"attr" : { "href" : "#" }
},
"children" : []
},
{
"data" : {
"title" : "Younger Son",
"attr" : { "href" : "#" }
},
"children" : []
}
]
},
]
我的输入如下所示:
[
Object
id: 35
name: "bnm,bnm"
parent_id: null
,
Object
id: 36
name: "ghk"
parent_id: 35
,
Object
id: 37
name: "hgkgh"
parent_id: null
,
Object
id: 38
name: "jklhjk"
parent_id: null
,
Object
id: 39
name: "fghdfgh"
parent_id: 38
,
Object
id: 40
name: "bsdbd"
parent_id: 38
,
...]
嗯,老实说,这不是一棵树,而是一片森林。不过没关系。
我花了很多时间在它上面,但没有让它工作。在 javascript 中对数组进行操作似乎很讨厌(与 Java、C++ 或 PHP 相比)...
到目前为止我尝试过的是:
- (pre)源数据(对象列表)满足一个条件:儿子不能在其父之前出现
- 使其成为关联数组(key=id, value=object),因此它必须是字符串键控。
- 弹出最后一个数组元素并将其推入其父元素的子数组中。对所有非 null 父元素重复此操作。
- 希望这能奏效。
【问题讨论】:
-
请发布您到目前为止所尝试的内容。这可能会让我们更容易为您提供帮助。
-
我发现 PHP 数组比 JavaScript 数组更糟糕。 JS 非常精简。你想做什么,什么不起作用,我不太明白......
-
我已经编辑了我的帖子并描述了算法思想。我知道我应该在 stacoverflow 上写到目前为止我尝试过的东西 - 但我没有 JS 经验,而且我的代码看起来很丑,以至于将它粘贴在这里毫无意义:/...
标签: javascript tree