gpt4 book ai didi

javascript - 从父子 JSON 数据中获取所有子项

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:48 25 4
gpt4 key购买 nike

我有父子 JSON 数据,我想从选定的父项中获取所有子项(嵌套子项)。

例如,我有 JSON 数据:

[{
"id": 1,
"parent": 0,
"name": "Parent"
}, {
"id": 2,
"parent": 1,
"name": "Child 1"
}, {
"id": 3,
"parent": 2,
"name": "Grand Child 1"
}, {
"id": 4,
"parent": 2,
"name": "Grand Child 2"
}, {
"id": 5,
"parent": 1,
"name": "Child 2"
}]

我有 findAllChildren(1) 函数,其中“1”是“parent”,函数的结果应该是:

[{
"id": 2,
"parent": 1,
"name": "Child 1"
}, {
"id": 3,
"parent": 2,
"name": "Grand Child 1"
}, {
"id": 4,
"parent": 2,
"name": "Grand Child 2"
}, {
"id": 5,
"parent": 1,
"name": "Child 2"
}]

在其他情况下,如果我调用 findAllChildren(2),该函数的结果应该如下所示:

[{
"id": 3,
"parent": 2,
"name": "Grand Child 1"
}, {
"id": 4,
"parent": 2,
"name": "Grand Child 2"
}]

创建函数来解决该案例的正确方法是什么?谢谢。

最佳答案

您可以只遍历原始数据并查找具有指定 id 作为 parent_id 的项目。如果找到,则对元素的 ID 递归执行相同的操作。

在这里查看:https://jsfiddle.net/6ydog1tj/2/

function findAllChildren (id, results, depth) {
for (d in data) {
if (data[d].parent == id) {
data[d].depth = depth
results.push(data[d])
findAllChildren(data[d].id, results, depth + 1)
}
}
}

var results = []
findAllChildren(1, results, 0)

$('body').append(results.map(function (element) { return Array(element.depth + 1).join(' -> ') + element.name + '<br>' }))

console.log(results)

打印出来

Child 1
-> Grand Child 1
-> Grand Child 2
Child 2

关于javascript - 从父子 JSON 数据中获取所有子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com