如何确定JavaScript中的数字是否为奇数

Jan*_*sen 218 javascript

任何人都可以指向我一些代码来确定JavaScript中的数字是偶数还是奇数?

Chi*_*hii 316

使用以下代码:

function isOdd(num) { return num % 2;}
console.log("1 is " + isOdd(1));
console.log("2 is " + isOdd(2));
console.log("3 is " + isOdd(3));
console.log("4 is " + isOdd(4));
Run Code Online (Sandbox Code Playgroud)

1表示奇数,而0表示偶数.

  • 请注意,这将返回"0"或"1"(或"NaN",如果你提供的东西不是数字而不能被强制成一个),这在大多数情况下都能正常工作.但是如果你想要一个真正的`true`或`false`:`return(num%2)== 1;` (92认同)
  • 只是为了澄清,模运算符(%)给出了除法的余数.所以3%2将是3/2,剩下1作为余数,因此3%2将返回1. (9认同)
  • 除了TJ所说的,如果`num`不是整数,这将返回一个分数.如果比较`isOdd(1.5)== true`(因为小数值不等于'true`),哪个仍然可以工作,但如果函数返回"true"或"false",那么它会更好.名称"isOdd". (6认同)
  • 你也可以`return !!(num%2)`得到一个布尔值 (6认同)
  • 关于NaN的好注意事项.但通常情况下,你想让javascript变得虚伪或虚假,这就是我按照我的方式编写它的原因. (3认同)

0x4*_*2D2 102

使用按位运算AND符.

function oddOrEven(x) {
  return ( x & 1 ) ? "odd" : "even";
}
Run Code Online (Sandbox Code Playgroud)

如果你不想要一个字符串返回值,而是一个布尔值,请使用:

var isOdd = function(x) { return x & 1; };
var isEven  = function(x) { return !( x & 1 ); };
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于不是(例如,3.14)的数字,这将返回"奇数"或"偶数". (7认同)
  • @Gnuey每个数字都由一系列位组成.所有奇数都将最低有效(最右边)位设置为1,所有偶数都为0."x&1"检查最后一位是否设置在数字中(因为1是一个数字,所有位都设置为1除外对于最低有效位):如果*是*,则数字为奇数,否则为偶数. (7认同)
  • +1,你的答案绝对胜过我的,更不用说你有唯一的答案****不使用`X%Y`! (5认同)
  • 我不确定我的测试是否准确,但是对于固定数字而言,按位AND似乎比模数运算符慢40倍,对于随机数字则慢2倍:http://jsperf.com/odd-or-甚至 (4认同)
  • 或者:`function isEven(n){return!(n&1);}`. (2认同)

TNC*_*TNC 26

你可以这样做:

function isEven(value){
    if (value%2 == 0)
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

  • 看起来你不知道布尔是什么.`if(condition){answer = true; } else {answer = false; ``只是`answer =(bool)条件的一个不必要的罗嗦版本;`.将函数减少到`function isEven(value){return(bool)(value%2 == 0); 我们都会很高兴. (9认同)
  • 不需要嗤之以鼻,因为我以不同的方式编程. (6认同)
  • @awm - 好像_you_不懂JavaScript.你不能使用`(bool)`强制转换为布尔值(这会给出错误),并且在任何情况下你都不需要:`返回值%2 == 0;`````````````````````` =`运算符返回一个布尔值. (3认同)
  • 哇,我真的写那个吗?是的,这显然是错的; 应该像`answer = !!(condition)`.我试图做的一点当然是你可以'返回值%2 == 0`并且不需要打扰条件. (2认同)

Clo*_*ble 17

function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
Run Code Online (Sandbox Code Playgroud)


Isa*_*ife 13

我是否必须制作一个具有大量偶数的数组

编号使用模数(%).它会为您提供剩下的两个数字.

Ex. 2 % 2 = 0 because 2/2 = 1 with 0 remainder.

Ex2. 3 % 2 = 1 because 3/2 = 1 with 1 remainder.

Ex3. -7 % 2 = -1 because -7/2 = -3 with -1 remainder.
Run Code Online (Sandbox Code Playgroud)

这意味着如果你修改任何数字x乘2,你得到0或1或-1.0意味着它是均匀的.任何其他事情都意味着它很奇怪.

  • +1用于解释操作员的工作方式. (4认同)
  • _"其他任何东西都意味着它很奇怪."_ - 或者它不是整数...... (2认同)

s0d*_*pop 8

这可以通过一小段代码来解决:

function isEven(value) {
    if (value%2 == 0)
    return true;
else
    return false;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)

  • 或'返回值%2 == 0` (4认同)

Dar*_*nez 7

在 ES6 中:

const isOdd = num => num % 2 == 1;
Run Code Online (Sandbox Code Playgroud)

  • 当为一个已有 26 个现有答案的 8 年历史问题添加答案时,解释您的答案所涉及的问题的新方面以及时间的推移和新版本是否会影响答案确实很有用。仅代码答案几乎总是可以通过添加一些解释来改进,在这种情况下,一些示例调用显示用法。 (3认同)
  • 标题是“如何确定 JavaScript 中的数字是否为奇数”,并且没有针对所询问的问题发布 ES6 解决方案。 (2认同)

pb2*_*b2q 6

像许多语言一样,Javascript有一个模数运算符%,它可以找到除法的余数.如果除以2后没有余数,则数字为偶数:

// this expression is true if "number" is even, false otherwise
(number % 2 == 0)
Run Code Online (Sandbox Code Playgroud)

这是测试偶数整数的常用习惯用法.

  • 但是,对于负值,模数可能很棘手/未定义.请务必参考相应的语言规范. (3认同)

Abd*_*UMI 6

使用我的扩展:

Number.prototype.isEven=function(){
     return this % 2===0;
};

Number.prototype.isOdd=function(){
     return !this.isEven();
}
Run Code Online (Sandbox Code Playgroud)

然后

var a=5; 
 a.isEven();
Run Code Online (Sandbox Code Playgroud)

==假

 a.isOdd();
Run Code Online (Sandbox Code Playgroud)

==真

如果您不确定它是否为 Number ,请通过以下分支进行测试:

if(a.isOdd){
    a.isOdd();
}
Run Code Online (Sandbox Code Playgroud)

更新 :

如果您不使用变量:

(5).isOdd()
Run Code Online (Sandbox Code Playgroud)

表现 :

事实证明,过程范式优于面向对象范式。顺便说一下,我在这个 FIDDLE 中进行了 分析。但是,OOP 方式仍然是最漂亮的。

在此处输入图片说明


小智 6

通过按位,代码定位:

var isEven=n=>(n&1)?"odd":"even";
Run Code Online (Sandbox Code Playgroud)


dgh*_*dgh 5

您可以传递一个简单的功能。使用模运算符%

var is_even = function(x) {
    return !(x % 2); 
}

is_even(3)
false
is_even(6)
true
Run Code Online (Sandbox Code Playgroud)