【发布时间】:2013-07-09 17:41:43
【问题描述】:
我正在从 Web 服务中提取两个相关对象 - 文件夹和电子邮件。文件夹具有 ID 和 parentfolder.ID 属性,该属性指示文件夹嵌套在哪个父文件夹下。电子邮件有一个 CategoryID,它指示它是哪个文件夹的子文件夹。
我已经成功创建了一个函数来将电子邮件嵌套在一个平面文件夹结构中:
{
"folders": [
{
"name": "my emails",
"type": "folder",
"additionalParameters": {
"id": "174661",
"type": "email",
"parentID": "0"
},
"children": [
{
"name": "Test1",
"type": "item",
"additionalParameters": {
"id": "27502",
"subject": "Test"
}
},
{
"name": "Hello",
"type": "item",
"additionalParameters": {
"id": "27917",
"subject": "Hi!"
}
}
]
},
{
"name": "Test",
"type": "folder",
"additionalParameters": {
"id": "175620",
"type": "email",
"parentID": "174661"
},
"children": [
{
"name": "Test2",
"type": "item",
"additionalParameters": {
"id": "27891",
"subject": "Test"
}
}
]
},
{
"name": "SubFolder1",
"type": "folder",
"additionalParameters": {
"id": "175621",
"type": "email",
"parentID": "175620"
},
"children": [
{
"name": "Test2",
"type": "item",
"additionalParameters": {
"id": "27892",
"subject": "Test"
}
},
{
"name": "Test3",
"type": "item",
"additionalParameters": {
"id": "27893",
"subject": "Test"
}
}
]
},
{
"name": "SubFolder2",
"type": "folder",
"additionalParameters": {
"id": "175622",
"type": "email",
"parentID": "175620"
},
"children": [
{
"name": "Test4",
"type": "item",
"additionalParameters": {
"id": "27894",
"subject": "Test"
}
}
]
}
]
}
现在我需要使用递归来遍历所有文件夹并将它们推送到其父级的 children 数组中。本质上将树诉诸 n 层。我可以忽略任何 type=items,因为它们已经正确嵌套。只需对类型为文件夹的进行排序即可。
有没有人实现了一个 JSON 递归函数来重建一个带有嵌套的 JSON 对象?
感谢您的帮助。
【问题讨论】:
-
代码太多了。请调试并找出有问题的部分并发布。
-
谢谢 Vivin,为了简洁起见,我已经更新了。
标签: javascript jquery sorting tree