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

为什么JS筛选负奇数时n%2===1失效,n%2!==0可行?

问题原因解析

核心问题:JavaScript取模运算的符号规则

你原来的判断条件n % 2 === 1失效,是因为JavaScript的取模运算结果符号和被除数一致。

比如数组里的-7,执行-7 % 2时,结果是-1而不是1——因为被除数是负数,取模结果也会保持负号。所以-7 % 2 === 1这个判断永远为false,自然筛选不到任何负奇数,得到空数组。

为什么n % 2 !== 0能正常工作?

所有奇数(无论正负)对2取模的结果要么是1要么是-1,这两个值都不等于0。所以n % 2 !== 0能准确匹配所有奇数,再结合n < 0的条件,就能正确筛选出负奇数。

额外的可行写法

如果你还是想用等于1的判断逻辑,可以先取绝对值再判断:

let negativeOdd = arr.filter(n => Math.abs(n) % 2 === 1 && n < 0);

这样不管是正奇数还是负奇数,取绝对值后对2取模都是1,再配合n < 0就能筛选出目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:21:32