JSON条件过滤问题:为何无法匹配包含指定Interest_area的条目?
问题分析与解决方案
你的代码之所以只能匹配到AB-004,核心问题出在匹配Interest_area的条件上:
你用了严格相等判断o.Interest_area === "Business",但AB-006的Interest_area值是"Environment , Business "——里面不仅有"Business",还包含其他内容和多余空格,严格相等要求字符串完全一致,所以自然匹配不到这条数据。
修正后的代码
let search = 'Course information session'; let result = arr.filter(o=> o.Session_type === search && o.Interest_area.trim() !== '' && // 替换严格相等为包含判断,同时处理前后空格 o.Interest_area.trim().includes("Business") ); console.log(result);
关键修正点说明
- 替换匹配逻辑:把
=== "Business"改成trim().includes("Business"),先去除Interest_area前后的冗余空格,再判断字符串是否包含"Business",这样就能覆盖像AB-006这种包含目标关键词但还有其他内容的情况。 - 移除多余的去重操作:
[...new Set(...)]在这里完全没必要——filter返回的是原数组中符合条件的独立对象,不存在重复,而且Set对引用类型的对象无法正确去重(因为每个对象的内存地址不同),反而可能导致逻辑冗余。
运行修正后的代码,就能同时得到AB-004和AB-006两条符合要求的数据了。
内容的提问来源于stack exchange,提问作者Slyper
相关产品推荐
相关产品推荐

