谁能告诉我一些代码,以确定一个数字在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()
性能:
事实证明,过程式范式比面向对象范式更好。 顺便说一下,我在这个小提琴中进行了剖析。然而,面向对象的方式仍然是最漂亮的。