我正在用搜索選項在樹結構中構建動態菜單。以樹結構搜索JSON數據
JSON數據看起來象下面這樣:
directories = [
{
name: 'parent1',
child: [{
name: 'child1',
child: [{
name: 'child2',
child: []
}]
},
{
name: 'child2',
child: []
}]
},
{
name: 'parent2',
child: [{
name: 'child1',
child: []
}]
},
{
name: 'parent2',
child: [{
name: 'child1',
child: []
},
{
name: 'child2',
child: []
}]
}
];
}
下面的代碼來搜索父節點級別的項目:
searchFilter(search: string) {
console.log(search);
this.filteredArray = this.directories.filter(item => {
if (item.name.toString().toLowerCase().startsWith(search.toLowerCase())) {
return true;
}
return false;
}
);
console.log(this.filteredArray);
}
我打電話上方keyup事件代碼,並將其返回的搜索結果父節點級別。
現在我想搜索直到第n個孩子。任何幫助?
你需要一個遞歸實現,此外,您應該重命名'child'屬性'children'因爲這樣一來,你即刻知道它是一個'數組'。 – Supamiu
你可以用遞歸透視的代碼來解釋嗎 –
我在上面的回答中提供了一個例子,但基本上不用進入數組使用一個級別(這就是過濾器所做的),而是更深入地返回第一個匹配元素。 – Supamiu