如何在JavaScript中嵌套的对象数组中搜索?

时间:2018-10-25 14:27:35

标签: javascript

我想在对象数组的“名称”中搜索一个字符串,例如“ hello”。数据结构如下图所示,

[{name:'hello', value: 'value', children: [{ name:'world', value: 'something'}]},
{name:'somename', value: 'value2', children: [{name: 'hello', value: 'value3', children: [{name: 'anothername', value: 'value4'}]},
{name: 'new', value: 'value5'}];

因此从上述数据结构来看,如果搜索查询说“你好”,我想检查每个对象的“名称”字段。还要检查每个对象的子级“名称”字段。某些对象可能有也可能没有子代和嵌套子代。我想检索与搜索查询匹配的对象。

例如,如果我的搜索查询为“ hello”,则预期输出如下:

[{name:'hello', value: 'value', children: [{ name:'world', value: 'something'}]},
{name:'somename', value: 'value2', children: [{name: 'hello', value: 'value3', children: [{name: 'anothername', value: 'value4'}]},

我尝试使用以下搜索方法,但不会在子级和嵌套子级中搜索。

search = (query, listitems => {
    if (!query) {
        return listitems;
    }
    query = query.toLowerCase();
    const results = [];
    let counter;
    let childcounter;
    listitem.forEach((listitem) => {
        counter = 0;
        childcounter = 0;
        if (listitem['name'].toLowerCase().indexOf(query) > -1)
        {
            counter++;
            if (listitem.children)
            {
                listitem.children.forEach ((child) => {
                    if (child['name'].toLowerCase().indexOf(query) > -1)
                    childcounter++;
                });

            }
            listitem.counter = counter;
            listitem.childcounter = childcounter;
            results.push(listitem);
        }
        return result
    });

我该怎么做。有人可以帮我吗谢谢。

0 个答案:

没有答案