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

为何自定义JavaScript myFilter函数返回布尔数组而非过滤后的数组?

自定义myFilter函数返回布尔数组的原因及修复方案

问题原因

你当前的myFilter逻辑存在错误:循环时直接把回调函数func(el)的返回值(也就是el > 3这类判断产生的布尔值)push进了结果数组,完全没做「布尔值为true时才保留原元素」的判断,自然返回的是一堆布尔值,而非过滤后的原数组元素。

修复后的代码

补充判断逻辑,只有当回调返回true时,才将当前元素加入结果数组:

function myFilter(arr, func) {
  const result = [];
  for (let el of arr) {
    // 先判断回调返回值,为true时才push原元素
    if (func(el)) {
      result.push(el);
    }
  }
  return result;
}

测试验证

调用你提供的示例:

myFilter([2, 5, 1, 3, 8, 6], function(el) { return el > 3 })

此时会正确返回[5, 8, 6],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:06:25