JavaScript如何过滤对象数组,筛选属性值含指定关键词的对象
问题根因
你代码里的'people'||'companies'会优先执行逻辑或运算,JavaScript中非空字符串属于真值,逻辑或会直接返回第一个真值'people',所以实际你的代码只判断了标题是否包含people,自然无法匹配到带companies的书籍。
修复代码
基础写法(直接判断两个条件)
把逻辑或放到两个includes判断结果之间即可:
let matchedBooks = books.filter(book => book.title.includes('people') || book.title.includes('companies')); console.log(matchedBooks);
优化写法(适配多关键词场景)
如果后续需要新增匹配关键词,可以用关键词数组+some方法简化代码,避免重复写判断逻辑:
// 要匹配的关键词都放在这个数组里即可 const matchKeywords = ['people', 'companies']; let matchedBooks = books.filter(book => { return matchKeywords.some(key => book.title.includes(key)); }); console.log(matchedBooks);
内容的提问来源于stack exchange,提问作者alexGH
相关产品推荐
相关产品推荐

