JavaScript中使用.filter与.find获取含Y/y字母的元素遇到问题如何解决
问题原因
你现有代码的问题出在两点:
- 第一次调用
filter时只判断了是否包含大写Y,你提供的示例数组中没有符合该条件的姓名,所以拿到的是空数组 - 后续调用的
find方法只会返回第一个满足条件的元素,因此你只拿到了第一个带小写y的Tommy,漏掉了后面同样带小写y的Bradley
最优实现方案
直接在filter的判断逻辑里同时匹配大小写Y即可,一次遍历就能拿到所有符合条件的结果,不需要额外调用find或者写循环:
方案1:统一转小写(推荐,代码更简洁)
const students = ["Tommy","Noah","Xander","Adil","Bradley","Nicholas","Damien"] const containsY = students.filter(student => student.toLowerCase().includes('y')) console.log(containsY) // 输出结果:["Tommy", "Bradley"]
方案2:直接加或逻辑判断
const containsY = students.filter(student => student.includes('Y') || student.includes('y'))
内容的提问来源于stack exchange,提问作者user11838329
相关产品推荐
相关产品推荐

