如何筛选长度大于5个字符的first字段姓名?代码问题求解
修正方案及代码说明
你的代码存在三个关键问题:
- 数组方法误用:
map用于转换每个数组元素,但你需要筛选符合条件的元素,应该使用filter。 - 拼写错误:
lenght是拼写错误,正确的属性名是length。 - 条件判断偏差:要获取长度超过5个字母的姓名,应该判断
length > 5(原代码的>4会包含刚好5个字母的姓名,比如 "Albus")。
修正后的代码如下:
const fullNames = [ { first: "Albus", last: "Dumbledore" }, { first: "Harry", last: "Potter" }, { first: "Hermione", last: "Granger" }, { first: "Ron", last: "Weasley" }, { first: "Rubeus", last: "Hagrid" }, { first: "Minerva", last: "McGonagall" }, { first: "Severus", last: "Snape" }, ]; const firstNames = fullNames .filter(person => person.first.length > 5) .map(person => person.first); console.log(firstNames); // 输出: ["Hermione", "Rubeus", "Minerva", "Severus"]
代码逻辑说明
filter阶段:遍历数组,仅保留first字段长度大于5的对象。map阶段:将筛选后的对象转换为对应的first字段值,最终得到只包含符合条件姓名的数组。
内容的提问来源于stack exchange,提问作者Taha Yasin
相关产品推荐
相关产品推荐

