在下面的JavaScript代码中,我试图获得具有字母"Y"或";y"。当我查怎么做的时候,我看到了.filter
和.find
方法。但是这个代码只返回containsY = ['Tommy']
。我尝试了for loop
,但是.find
只返回所提供条件中的第一个元素的值,并且它不返回带有&;y&;s的所有名称。还有比这更好的方法来获得所有的"你"吗?和";y"名字吗?
const students = ["Tommy","Noah","Xander","Adil","Bradley","Nicholas","Damien"]
let containsY = students.filter((student) => student.includes("Y"))
//Look for name with "y", and push it to containsY
containsY.push(students.find((student) => student.includes("y")))
console.log(containsY)
您的filter
方法很好。它给出了错误的结果,因为includes
是大小写敏感的。
相反,在filter
回调中,将student
转换为小写,然后检查它是否包含"y"
:
const students = ["Tommy","Noah","Xander","Adil","Bradley","Nicholas","Damien"]
const res = students.filter((student) => student.toLowerCase().includes("y"))
console.log(res)
使用正则表达式(其优点是只需要一次测试)
const students = ["Tommy", "Noah", "Xander", "Adil", "Bradley", "Nicholas", "Damien"]
const result = students.filter(student => /y/i.test(student))
console.log(result)
或者在一个回调中同时测试.includes('y')
和.includes('Y')
。
const students = ["Tommy", "Noah", "Xander", "Adil", "Bradley", "Nicholas", "Damien"]
const result = students.filter(student => student.includes('y') || student.includes('Y'));
console.log(result)