次のような深い 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 の配列もあり、定義されたオブジェクトを含む (サブ) カテゴリのみが残るように、このオブジェクトのセットをフィルター処理する必要があります。
たとえば、2 つの 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 を定義し、それぞれへのパス全体を保持します。
ありがとうございました。