次のネストされたJSONデータ構造を持っています。各ノードは任意の数の子ノードを持つことができ、データは任意の数のノードに深くすることができます。lodashでネストされたフィルタを作成する方法
[{
id : "a",
path : "a"
}, {
id : "b",
path : "b"
}, {
id : "c",
path : "c",
children: [{
id : "a",
path : "c/a"
}, {
id : "b",
path : "c/b",
children: [{
id : "a",
path : "c/b/a"
}, {
id : "b",
path : "c/b/b"
}]
}]
}]
Iは一致パスのネストされたJSONオブジェクト、及び任意の親オブジェクトを返すlodash(v3.10.1)関数を作成する必要があります。私は「B」で検索した場合たとえば、フィルタは次のように返す必要があり :
[{
id : "b",
path : "b"
}, {
id : "c",
path : "c",
children: [{
id : "b",
path : "c/b",
children: [{
id : "a",
path : "c/b/a"
}, {
id : "b",
path : "c/b/b"
}]
}]
}]
私の最初の試みは、このようなものだったが、それは仕事をした:
const filterTree = (filter, list) => {
return _.filter(list, (item) => {
if (item.path) {
return _.includes(item.path.toLowerCase(), filter.toLowerCase());
} else if (item.children) {
return !_.isEmpty(filterTree(filter, item.children));
}
});
};
すべてのヘルプははるかになります
この答えを見http://stackoverflow.com/a/41175686/1988157それは – stasovlas