ReactJS搜索功能仅最后一个筛选条件生效,前面规则匹配无返回结果
问题根因
你代码的问题出在return后的条件写法:JavaScript中的逗号运算符会按顺序执行所有逗号分隔的表达式,但最终仅返回最后一个表达式的执行结果。因此你前面两个字段的匹配判断不会对过滤结果产生任何影响,只有最后一条description字段的匹配规则生效。
修复方案
根据你的搜索需求选择对应逻辑运算符替换逗号即可:
- 若需要任意字段匹配就命中搜索结果(常规搜索场景的默认需求),使用逻辑或运算符
||连接三个条件,同时可以提前将搜索词转小写减少重复计算,优化性能,修正后代码如下:
handleSearch = (event) => { const searchWord = event.target.value; // 提前统一转小写,避免每个字段判断时重复执行 const lowerSearchWord = searchWord.toLowerCase(); const newFilter = this.state.data.filter((value) => { return ( value.programName.toLowerCase().includes(lowerSearchWord) || value.endTime.toLowerCase().includes(lowerSearchWord) || value.description.toLowerCase().includes(lowerSearchWord) ) }); this.setState({ data1: newFilter, }); };
- 若需要三个字段同时匹配搜索词才命中结果,替换为逻辑与运算符
&&连接三个条件即可。
内容的提问来源于stack exchange,提问作者Sai Manoj v
相关产品推荐
相关产品推荐

