如何使用Array.prototype.map()根据数组数据生成新字符串?
问题修正方案
你的代码返回[undefined,undefined,undefined,undefined,undefined]的核心原因是**map的回调函数没有返回值**:当箭头函数使用大括号{}包裹代码块时,必须显式通过return语句返回结果,否则默认返回undefined。另外还存在一处文本拼写错误:else分支的字符串缺少空格,应该是" is under age!!"而非"is underage!!"。
修正后的代码(显式return版本)
function makeStrings(arr){ const map1 = arr.map((person) => { if(person.age > 18){ return person.name + " can go to The Matrix"; } else { return person.name + " is under age!!"; } }); return map1; }
更简洁的写法(隐式返回+模板字符串)
利用箭头函数的隐式返回特性(去掉大括号),结合三元表达式和模板字符串优化代码:
function makeStrings(arr){ return arr.map(person => person.age > 18 ? `${person.name} can go to The Matrix` : `${person.name} is under age!!` ); }
运行修正后的代码,就能得到预期输出:
["Angelina Jolie can go to The Matrix", "Eric Jones is under age!!", "Paris Hilton is under age!!", "Kayne West is under age!!", "Bob Ziroll can go to The Matrix"]
内容的提问来源于stack exchange,提问作者Caelan Quigley
相关产品推荐
相关产品推荐

