我想列出组名称为“group110”的所有叶子 ID 因此,此示例的输出为 014、288、223 和 244。
这是我的 JSON 文件的内容:
{
"name": "visualization",
"children": [
{
"name": "group100",
"children": [
{
"name": "group110",
"children": [
{
"name": "group111",
"children": [
{"id":"014","link":"-","name":" Animals/70","decade":"-"}
]
},
{
"name": "group112",
"children": [
{"id":"288","link":"-","name":"Heidelberg platen press","decade":"1960s"}
]
},
{
"name": "group113",
"children": [
{"id":"223","link":"-","name":"Camera Praktica Super TL – shutter release","decade":"1960s"},
{"id":"244","link":"-","name":"Mechanical calculator, Facit","decade":"1950s"}
]
}
]
},
最佳答案
试试这个方法。使用递归方法查找组并使用另一种递归方法收集叶节点。
function getLeafNodes(leafNodes, obj){
if(obj.children){
obj.children.forEach(function(child){getLeafNodes(leafNodes,child)});
} else{
leafNodes.push(obj);
}
}
function findIds(json,name){
if(json.children){
if(json.name==name) {
var leafNodes = [];
getLeafNodes(leafNodes,json);
console.log(leafNodes.map(function(leafNode){ return leafNode.id; })); //Logs leaf node ids to the console
} else {
json.children.forEach(function(child){
findIds(child,name);
});
}
}
}
执行以下代码将打印["014", "288", "223", "244"]
findIds(actualJSON,"group110");
关于javascript - 如何使用 javascript 和 json 查找组的所有叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740649/