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

周杰伦

我想为位于嵌套对象数组中的字段实现关键字搜索。我怎样才能实现它?

数据 -

const groupList = [{
 "group_name": "General",
 "trainings": [
    {
        "id": 1,
        "training_name": "Plural Sight",
    },
    {
        "id": 2,
        "training_name": "Google Maps",
    }
 ]
}]

代码 -

const [groupsData, setGroupsData] = useState([]);

const lowerContains = (str1, str2) => str1 && str2 && str1.toLowerCase().indexOf(str2.toLowerCase()) !== -1;

const handleSearch = searchKeyword => {
    if (searchKeyword && searchKeyword.trim()) {
      const groupFiltered = groupList.filter(item => item.group_name && lowerContains(item.group_name, searchKeyword));
      setGroupsData( groupFiltered );
      return;
    }
    setGroupsData({ [...groupList] });
};

目前我可以使用搜索,group_name但我也想使用training_nameinside进行搜索trainings

尼克帕森斯

searchKeyword假设如果包含在组名称或训练名称对象之一中,您想要保留组对象,您可以使用.some(). 通过使用.some()on trainings,您可以检查数组中是否至少有一个对象trainings包含training_name与您的关键字搜索匹配的值:

const groupFiltered = groupList.filter(item => 
  (item.group_name && lowerContains(item.group_name, searchKeyword)) ||
  (item.trainings.some(training => lowerContains(training.training_name, searchKeyword)))
);

注意:在您共享的示例数据中,group_name始终包含一个值,因此您可以删除item.group_name &&检查是否始终如此。

请参阅下面的工作示例:

const groupList = [{ "group_name": "General", "trainings": [{ "id": 1, "training_name": "Plural Sight", }, { "id": 2, "training_name": "Google Maps", } ] }];
const lowerContains = (x, y) => x.toLowerCase().includes(y.toLowerCase());

const searchKeyword = "Plural";
const groupFiltered = groupList.filter(item => 
  (item.group_name && lowerContains(item.group_name, searchKeyword)) ||
  (item.trainings.some(training => lowerContains(training.training_name, searchKeyword)))
);

console.log(groupFiltered);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在包含嵌套对象的对象数组中搜索值

如何在弹性搜索中获取嵌套对象的数组计数

如何在jQuery中搜索对象数组

java程序中如何实现对象数组的跳转搜索?

如何在弹性搜索中查询嵌套的json对象/字段?

如何在弹性搜索中获取嵌套对象?

如何在嵌套数组中实现多字段更新

如何在嵌套字符串数组中搜索

如何在猫鼬的对象数组中搜索对象?

如何在mongodb中搜索对象数组的数组

如何在嵌套数组中过滤JSON对象数组

Mongodb,嵌套数组中的搜索对象

如何在mongodb中的对象数组中搜索

如何在对象数组中搜索唯一的ID?

如何在嵌套的对象数组中取消设置值?MongoDB

MongoDB:如何在嵌套数组中插入对象?

如何在YAML文件中嵌套对象和数组?

如何在javascript中对嵌套的对象数组进行排序?

如何在JavaScript中过滤数组内的嵌套对象

如何在数组中按属性查询嵌套对象?

如何在mongodb中查询对象的嵌套数组?

MongoDB - 如何在嵌套的对象数组中查找空值

如何在Powershell中定义嵌套对象数组?

如何在java脚本中添加嵌套的对象数组?

如何在 React 中访问嵌套数组对象

如何在反应中为嵌套的对象数组设置状态?

如何在对象数组的嵌套数组中获取数组对象javascript

如何在spring-data弹性搜索中为嵌套对象过滤创建搜索查询?

如何在Spring Boot数据弹性搜索中搜索嵌套列表对象