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

JavaScript中filter方法配合回调筛选奇数的运行原理是什么?

问题解答

你对逻辑的猜测是完全正确的,整个代码的运行规则可以拆解为以下几个部分:

1. filter方法的执行逻辑

Array.prototype.filter() 会遍历原数组的每一个元素,将每个元素依次传入回调函数,回调返回真值(truthy)时当前元素被保留到结果数组,返回假值(falsy)时元素被过滤。

2. 回调函数的判断逻辑

isOddNumber 回调返回的是参数对2取余的结果:

  • 奇数除以2余数为1,在JS中1属于truthy值
  • 偶数除以2余数为0,在JS中0属于falsy值

3. 逐元素执行过程

对应你给出的数组,遍历过程如下:

  • 元素1:1%2=1 → 真值 → 保留
  • 元素2:2%2=0 → 假值 → 过滤
  • 元素4:4%2=0 → 假值 → 过滤
  • 元素7:7%2=1 → 真值 → 保留
  • 元素3:3%2=1 → 真值 → 保留
  • 元素5:5%2=1 → 真值 → 保留
  • 元素6:6%2=0 → 假值 → 过滤
    最终得到的结果数组自然全为奇数。
    如果你觉得隐式类型转换不好理解,可以把回调写为显式返回布尔值的形式,和原有代码效果完全一致:
function isOddNumber(number) {
    return number % 2 === 1;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:03