JavaScript实现自定义map函数报错:如何编写调用callback返回新数组的函数
你的代码存在的问题
- 没有初始化用于存储结果的新数组,代码中用到的
value变量未声明,也不是可执行函数,value(callback(newArray))属于语法错误 for...of遍历的变量命名错误,let newArray of array中的newArray是当前遍历到的数组元素,不是数组本身,命名混淆导致逻辑混乱- 没有将回调函数的返回值存入结果数组的逻辑
- 最终返回的
value未定义,无法得到正确结果
修正后的完整代码
function map(array, callback) { // 初始化空数组存储结果 const result = [] // 遍历原数组每一个元素 for (let item of array) { // 调用回调拿到返回值,存入结果数组对应位置 result.push(callback(item)) } // 返回最终结果数组 return result } export default map
如果要更贴合JS原生map的规范,还可以给回调传入当前元素索引、原数组两个可选参数,写法如下:
function map(array, callback) { const result = [] for (let index = 0; index < array.length; index++) { result.push(callback(array[index], index, array)) } return result } export default map
验证效果
用你给出的示例测试:
const numbers = [1,2,3,4,5]; const newNumbers = map(numbers, (number) => { return number + 3; }); console.log(newNumbers); // 输出 [4,5,6,7,8] 符合预期
内容的提问来源于stack exchange,提问作者Barak David
相关产品推荐
相关产品推荐

