动态查询搜索/过滤javascript对象返回父项和子项

时间:2017-05-08 03:07:01

标签: javascript nested

在我的应用程序中,我有一个嵌套对象(基本对象,不使用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]

0 个答案:

没有答案