如何从对象数组提取name属性值并匹配搜索输入筛选条目?
数组筛选:匹配name属性实现搜索功能
你用find()的思路错了,find()只会返回第一个满足回调条件的对象,而你写的item => item.name只要对象存在name属性就会返回true,所以它直接拿了数组里第一个元素,之后判断的只是这个元素的name是否包含搜索内容,根本没做到筛选所有条目。
要实现筛选所有name匹配搜索输入的条目,得用filter()方法,它会遍历整个数组,返回所有符合条件的元素组成的新数组。
基础实现代码
// 假设searchData是你的搜索输入值 const filteredItems = items.filter(item => item.name.includes(searchData));
优化:忽略大小写匹配
如果需要不区分大小写的搜索(比如输入"blue"也能匹配"Blue Beanie"),可以把双方都转成小写再判断:
const filteredItems = items.filter(item => item.name.toLowerCase().includes(searchData.toLowerCase()) );
这样就能得到所有name包含搜索内容的对象数组了。
内容的提问来源于stack exchange,提问作者Narendra Singh
相关产品推荐
相关产品推荐

