我有一组与此类似的深层 JSON 对象:
var hierarchy = [
{
"title": "category 1",
"children": [
{"title": "subcategory 1",
"children": [
{"id": 1, "title": "name 1"},
{"id": 2, "title": "name 2"},
{"id": 3, "title": "name 3"}
]
},
{"title": "subcategory 2",
"children": [
{"id": 1, "title": "name 4"}
]
}
]
},
{
"title": "category 2",
"children": [etc. - shortened for brevity]
}
];
所以基本上它是一个层次结构 - 有些类别可以有子类别,其中包含具有一些 ID 和名称的对象。我还有一组与最深层次结构级别(没有子对象)相关的 ID,我需要过滤这组对象,以便只保留包含已定义对象的(子)类别。
例如,如果我有一个包含两个 ID 的数组:
var IDs = [2, 3];
结果将是:
var hierarchy = [
{
"title": "category 1",
"children": [
{"title": "subcategory 1",
"children": [
{"id": 2, "title": "name 2"},
{"id": 3, "title": "name 3"}
]
}
]
}
];
即整个,整个“类别2”对象被移除,整个“子类别2”被移除,ID为“1”的对象被移除。
问题是这些对象的深度是可变且未知的 - 有些对象没有孩子,有些对象有孩子也有孩子等等,任何子类别本身都可以有一个子类别,我基本上需要找到没有孩子的对象定义 ID 并保留每个 ID 的完整路径。
谢谢你。