谁能告诉我一些代码,以确定一个数字在JavaScript是偶数还是奇数?


当前回答

像许多语言一样,Javascript有一个模运算符%,用于查找除法的余数。如果数除2后无余数,则该数为偶数:

// this expression is true if "number" is even, false otherwise
(number % 2 == 0)

同理,若2除后余数为1,则该数为奇数:

// this expression is true if "number" is odd, false otherwise
(number % 2 == 1)

这是测试偶数的一个非常常见的习惯用法。

其他回答

这里有很多答案,但我只想提一点。

通常最好使用模运算符,如% 2,但也可以使用位运算符,如& 1。两者都会产生相同的结果。然而,它们的先例不同。如果你需要一段代码,比如

i%2 === p ? n : -n

这很好,但是对于位运算符,你必须这样做

(i&1) === p ? n : -n

就是这样。

奇数除以2剩下余数为1,偶数除以0剩下余数为0。因此我们可以使用这段代码

  function checker(number)  {
   return number%2==0?even:odd;
   }

通过使用三元运算符,我们可以找到奇数和偶数:

Var num = 2; 结果= (num % 2 == 0) ?'even': '奇数' console.log(结果);

这就是我所做的

//Array of numbers
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,32,23,643,67,5876,6345,34,3453];
//Array of even numbers
var evenNumbers = [];
//Array of odd numbers
var oddNumbers = [];

function classifyNumbers(arr){
  //go through the numbers one by one
  for(var i=0; i<=arr.length-1; i++){
     if (arr[i] % 2 == 0 ){
        //Push the number to the evenNumbers array
        evenNumbers.push(arr[i]);
     } else {
        //Push the number to the oddNumbers array
        oddNumbers.push(arr[i]);
     }
  }
}

classifyNumbers(numbers);

console.log('Even numbers: ' + evenNumbers);
console.log('Odd numbers: ' + oddNumbers);

出于某种原因,我必须确保数组的长度小于1。当我不这样做时,我在oddNumbers数组的最后一个元素中得到“undefined”。

使用我的扩展:

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

Number.prototype.isOdd=function(){
     return !this.isEven();
}

然后

var a=5; 
 a.isEven();

= =假

 a.isOdd();

= = True

如果你不确定它是否是一个数字,通过以下分支测试它:

if(a.isOdd){
    a.isOdd();
}

更新:

如果你不使用变量:

(5).isOdd()

性能:

事实证明,过程式范式比面向对象范式更好。 顺便说一下,我在这个小提琴中进行了剖析。然而,面向对象的方式仍然是最漂亮的。