javascript - 如何过滤数组中的字符串?
问题描述
我试图搜索功能。此函数检查具有多个字符串的嵌套数组,然后返回该数组是否有搜索词。
数组的数据结构
[
{
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以显示项目,
非常感谢你的帮助。
解决方案
您需要遍历 searchWords 数组以查找它是否与搜索词匹配。这个会起作用
const filterItems = list.filter(
(item) => item.searchWords.filter((myWord) => myWord.indexOf(searchWord)>-1)
);
推荐阅读
- python - python defaultdict如何使用它而不是函数
- java - Swing/AWT/JavaFX GUI 冻结/NullPointerException
- drools - 异常“无法解析 ObjectType 'getAmount'”
- javascript - 将二维单词数组转换为单个数组
- testing - “全局”父选择器:将任何选择器的范围限制为某个父选择器
- html - HTML 密码验证 - 需要一个强制的特殊字符,但不是数字(数字)
- linux - 如何绕过基于密钥的身份验证,在我通过 vagrant 创建的本地服务器中 ssh?
- r - file.copy,loadworkbook 不在 R 闪亮的反应环境中工作,但在反应环境之外工作
- r - 通过R中的组计算多行之间的差异
- java - JavaFx 构建问题“找不到主类”