我想在对象数组的“名称”中搜索一个字符串,例如“ 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
});
我该怎么做。有人可以帮我吗谢谢。