在我的应用程序中,我有一个嵌套对象(基本对象,不使用SQL),它由父项和子项组成,呈现为这样的大纲:
- item 1
⁃ Child 1
⁃ Grand 1 (date = May 21)
⁃ Grand 2
⁃ More children 1
⁃ More children 2
⁃ [could be infinitely deep]
⁃ Child 2
⁃ grandchild1
⁃ Grandchild 2
⁃ [could be infinitely deep]
每个对象都有如下属性:
{
Name: “item 1”,
Date: June 3 2017,
Children: [ …children]
}
我有一个搜索框,用户可以在其中输入一个术语,并返回任何匹配的对象,以及其父项和子项。例如,如果有人搜索“Grand 2”,它将如下所示:
- item 1
⁃ Child 1
⁃ **Grand 2**
⁃ More children 1
⁃ More children 2
⁃ [could be infinitely deep]
以下是我用于过滤的代码,效果很好:
export const filterTree = (filter, list) => {
return _.filter(list, (item) => {
if (_.includes(_.toLower(item.name), _.toLower(filter))) {
item.collapsed = false;
return true;
} else if (item.children) {
item.collapsed = false;
item.children = filterTree(filter, item.children);
return !_.isEmpty(item.children);
}
});
};
我正在努力的是结合这样的搜索“Grand 2 OR date = 2017年5月21日”。哪会归还。
• item 1
⁃ Child 1
⁃ Grand 1 (date = May 21)
⁃ Grand 2
⁃ More children 1
⁃ More children 2
⁃ [could be infinitely deep]