首页 > 解决方案 > 如何过滤数组中的字符串?

问题描述

我试图搜索功能。此函数检查具有多个字符串的嵌套数组,然后返回该数组是否有搜索词。

数组的数据结构

[
  {
   name:'aa',
   searchWords:['aa','ab','bc'] <- I want to use this array for search
  },
  {
   name:'bb',
   searchWords:['bb','bc','de'] <- I want to use this array for search
  },
...
]

我尝试使用 indexOf 函数。
但是,我无法使用下面的代码显示任何组件。
但是我在代码中将目标值从item.searchWords更改为item.name。有效。

HTML
<div className="itemWrapper">
     {filterItems.map((item, idx) => (
            <Item key={idx} {...item} id={idx} list={list} />
      ))}
</div>    


Js
const filterItems = list.filter(
      (item) => item.searchWords.indexOf(searchWord) !== -1,
    );

我想要的结果是搜索结果实时更新。
例如上面相同的数据结构,当用户搜索'a'时,searchWords 'aa'和'ab'返回true以显示项目,

非常感谢你的帮助。

标签: javascriptreactjsredux

解决方案


您需要遍历 searchWords 数组以查找它是否与搜索词匹配。这个会起作用
const filterItems = list.filter( (item) => item.searchWords.filter((myWord) => myWord.indexOf(searchWord)>-1) );


推荐阅读