使用Map方法编写函数(Colt Steele Web开发训练营):cleanNames函数返回undefined问题
代码问题排查
练习题目要求

已编写的代码
function cleanNames(array) { array.map(function (n) { return n.trim(); }) }
问题定位
代码运行始终返回undefined,核心原因如下:
map()是有返回值的数组方法,遍历数组时会对每个元素执行回调逻辑,最终返回由回调处理结果组成的全新数组。当前函数只在内部执行了map遍历,没有通过return语句把map生成的处理后数组向外返回,按照JS语法规则,没有显式return的函数最终默认返回undefined。map()方法本身不会修改原始入参数组。缺少最外层return的情况下,整个函数执行过程既不会改动传入的原数组,也不会向外传递任何处理结果,完全无法实现姓名去空格的清洗效果。
修正方案
在map调用前加上return语句,将处理后的数组作为函数返回值:
function cleanNames(array) { return array.map(function (n) { return n.trim(); }) }
补充说明
如果练习要求是直接修改原数组而非返回新数组,则不适合使用map方法,需要换成forEach遍历逐个修改原数组的对应元素;但这类字符串清洗的练习绝大多数要求都是返回处理后的新数组,补充对应return即可正常通过测试。
内容的提问来源于stack exchange,提问作者Chuka_U
相关产品推荐
相关产品推荐

