谁能告诉我一些代码,以确定一个数字在JavaScript是偶数还是奇数?
当前回答
这样如何……
var num = 3 //instead get your value here
var aa = ["Even", "Odd"];
alert(aa[num % 2]);
其他回答
使用下面的代码:
函数 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));
1表示奇数,0表示偶数。
许多人误解了odd的意思
isOdd("str")应该为假。 整数只能是奇数。 isOdd(1.223)和isOdd(-1.223)应该是假的。 浮点数不是整数。 isOdd(0)应该是假的。 0是一个偶数(https://en.wikipedia.org/wiki/Parity_of_zero)。 isOdd(-1)应该为真。 它是一个奇数。
解决方案
function isOdd(n) {
// Must be a number
if (isNaN(n)) {
return false;
}
// Number must not be a float
if ((n % 1) !== 0) {
return false;
}
// Integer must not be equal to zero
if (n === 0) {
return false;
}
// Integer must be odd
if ((n % 2) !== 0) {
return true;
}
return false;
}
JS小提琴(如果需要):https://jsfiddle.net/9dzdv593/8/
1-liner
Javascript一行程序解决方案。对于那些不关心可读性的人。
const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;
你可以这样做:
function isEven(value){
if (value%2 == 0)
return true;
else
return false;
}
使用%将帮助您做到这一点…
你可以创建几个函数来为你做这件事…我更喜欢单独的函数,这些函数没有附加到Javascript中的数字,就像这样,它还检查你是否传递数字:
奇函数:
var isOdd = function(num) {
return 'number'!==typeof num ? 'NaN' : !!(num % 2);
};
偶函数:
var isEven = function(num) {
return isOdd(num)==='NaN' ? isOdd(num) : !isOdd(num);
};
像这样叫它:
isOdd(5); // true
isOdd(6); // false
isOdd(12); // false
isOdd(18); // false
isEven(18); // true
isEven('18'); // 'NaN'
isEven('17'); // 'NaN'
isOdd(null); // 'NaN'
isEven('100'); // true
当您需要测试某个变量是否是奇数时,您应该首先测试它是否是整数。另外,请注意,当您计算负数的余数时,结果将是负数(-3 % 2 === -1)。
function isOdd(value) {
return typeof value === "number" && // value should be a number
isFinite(value) && // value should be finite
Math.floor(value) === value && // value should be integer
value % 2 !== 0; // value should not be even
}
如果号码。isInteger是可用的,你也可以将这段代码简化为:
function isOdd(value) {
return Number.isInteger(value) // value should be integer
value % 2 !== 0; // value should not be even
}
注意:在这里,我们测试值% 2 !== 0而不是值% 2 == 1,因为-3 % 2 === -1。如果你不想让-1通过这个测试,你可能需要改变这一行。
下面是一些测试用例:
isOdd(); // false
isOdd("string"); // false
isOdd(Infinity); // false
isOdd(NaN); // false
isOdd(0); // false
isOdd(1.1); // false
isOdd("1"); // false
isOdd(1); // true
isOdd(-1); // true