You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:18:05