【问题标题】:how can i make generic search我怎样才能进行通用搜索
【发布时间】:2023-01-25 20:29:15
【问题描述】:

我有一个表,我正在使用一个搜索栏我需要对所有字段进行通用搜索,如果任何值将得到匹配结果将显示我为一个字段所做的,但我需要为所有字段制作它,所以我需要制作任何存在的值,所有这些都会像通用搜索一样得到检查,例如,如果我使用搜索名称、ID、模块等所有这些值都将用于搜索栏

[{
  "isConsole": true,
  "taskStatus": "SUCCESS",
  "taskName": "G-csv_download-25",
  "id": 463,
  "module": "Management",
  "subModule": "Grid",
  "taskId": "1fc0d5a7-834a-4906-8448-16835e8838b0",
  "projectId": 42,
  "createdAt": "2023-01-21T05:56:50.184965Z",
  "size": 0.20800000000000002,
  "failureMessage": null
}, {
  "isConsole": true,
  "taskStatus": "SUCCESS",
  "taskName": "G-csv_download-26",
  "id": 464,
  "module": "Management",
  "subModule": "Grid",
  "taskId": "2724fcbf-d25b-424f",
  "projectId": 42,
  "createdAt": "2023-01-21T06:02:48.557536Z",
  "size": 0.20800000000000002,
  "failureMessage": null
}, {
  "isConsole": true,
  "taskStatus": "SUCCESS",
  "taskName": "G-csv_download-27",
  "id": 465,
  "module": "Management",
  "subModule": "Grid",
  "taskId": "26642fb3-1593-4e0d-b276-901bb7e729c3",
  "projectId": 42,
  "createdAt": "2023-01-21T10:31:30.965508Z",
  "size": 0.20800000000000002,
  "failureMessage": null
}]
this is for single field
  const searchBasedFilter = React.useMemo(
    () =>
      downloads.filter((data) =>
        searchData
          ? data.subModule?.toLowerCase().includes(searchData?.toLowerCase())
          : data
      ),
    [searchData, downloads]
  );

【问题讨论】:

  • 如何遍历数组中对象的所有值?或者先通过 id's 如果没有找到,然后使用 name's 并继续
  • 就像在搜索栏中,如果我使用 id 进行搜索,那么它会根据 id 进行过滤,如果我根据名称进行搜索,那么它将根据名称进行过滤
  • 我有很多领域

标签: javascript reactjs


【解决方案1】:

要对所有字段进行通用搜索,可以使用 Object.values() 方法提取对象的所有值,然后使用 Array.prototype.some() 方法检查是否有任何值与搜索查询匹配.

就像是:

const searchBasedFilter = React.useMemo(
() =>
  downloads.filter((data) =>
    searchData
      ? Object.values(data).some((value) =>
          value?.toString().toLowerCase().includes(searchData?.toLowerCase())
        )
      : data
  ),
[searchData, downloads]
);

这将检查对象的所有值,无论是字符串还是数字,并将检查搜索查询是否存在于对象的任何值中。

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多