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

求修正接收数组与两个回调的JavaScript函数,返回符合预期的新数组

修正后的JavaScript函数实现

原代码的问题在于使用了逻辑与运算符&&,当两个回调结果均为真值时,它会返回第二个回调的执行结果,这和期望的交替返回两个回调结果的行为不符。同时原代码没有明确体现“仅当两个回调结果均为真时才返回对应结果”的判断逻辑。

修正后的代码如下:

let myMap = function(array, cb1, cb2) {
  let result = []
  for (let i = 0; i < array.length; i++) {
    const cb1Result = cb1(array[i]);
    const cb2Result = cb2(array[i]);
    // 验证两个回调结果是否均为真
    if (cb1Result && cb2Result) {
      // 根据索引奇偶性选择对应的结果加入数组
      result.push(i % 2 === 0 ? cb1Result : cb2Result);
    }
  }
  return result
}

测试验证

使用你提供的测试代码:

let triple = function (n) {
    return 3 * n;
};

let half = function (n) {
    return n / 2;
};
console.log(myMap([7, 3, 2, 9, 8], triple, half));
// 输出:[ 21, 1.5, 6, 4.5, 24 ]

这段代码的逻辑是:

  • 对数组中的每个元素,先执行两个回调函数得到结果;
  • 检查两个结果是否都为真值(非false、0、""、null、undefined、NaN);
  • 若均为真,则根据元素索引的奇偶性选择对应回调的结果加入数组:偶数索引(0、2、4)用第一个回调的结果,奇数索引(1、3)用第二个回调的结果;
  • 若任一结果为假,则跳过该元素(不加入结果数组)。

内容的提问来源于stack exchange,提问作者MuCloud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:25:18