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

JavaScript中filter方法语法结构差异导致运行结果不同的问题

问题原因解析

两段代码的逻辑完全不同,核心差异是filter回调函数的返回值不一样:

  • 第一段代码的回调函数,匹配条件时返回的是元素本身:
    当匹配到的元素是数字0时,你返回的0在JS中属于假值,filter会直接过滤掉返回假值对应的元素,这就是测试不通过的核心原因。
  • 第二段代码的回调函数,直接返回的是条件判断的布尔结果:
    只要元素是数字,typeof item === 'number'就会返回布尔值true,就算是0也不会被判定为假,符合filter的过滤规则,所以能通过所有测试。

另外你代码里额外加的|| item === 0确实是多余判断,数字0的typeof返回值本身就是'number',这个条件永远不会被触发。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:54:04