谁能告诉我一些代码,以确定一个数字在JavaScript是偶数还是奇数?
当前回答
使用%将帮助您做到这一点…
你可以创建几个函数来为你做这件事…我更喜欢单独的函数,这些函数没有附加到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
其他回答
这可以用一小段代码来解决:
function isEven(value) {
return !(value % 2)
}
希望这对你有所帮助。
刚刚在adobedreamweaver中执行了这个,它工作得很完美。 i using if (isNaN(mynmb))
检查给定的值是否为数字, 我还使用Math.abs(mynmb%2)将负数转换为正数并计算
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body bgcolor = "#FFFFCC">
<h3 align ="center"> ODD OR EVEN </h3><table cellspacing = "2" cellpadding = "5" bgcolor="palegreen">
<form name = formtwo>
<td align = "center">
<center><BR />Enter a number:
<input type=text id="enter" name=enter maxlength="10" />
<input type=button name = b3 value = "Click Here" onClick = compute() />
<b>is<b>
<input type=text id="outtxt" name=output size="5" value="" disabled /> </b></b></center><b><b>
<BR /><BR />
</b></b></td></form>
</table>
<script type='text/javascript'>
function compute()
{
var enter = document.getElementById("enter");
var outtxt = document.getElementById("outtxt");
var mynmb = enter.value;
if (isNaN(mynmb))
{
outtxt.value = "error !!!";
alert( 'please enter a valid number');
enter.focus();
return;
}
else
{
if ( mynmb%2 == 0 ) { outtxt.value = "Even"; }
if ( Math.abs(mynmb%2) == 1 ) { outtxt.value = "Odd"; }
}
}
</script>
</body>
</html>
function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
我将实现这个来返回一个布尔值:
function isOdd (n) {
return !!(n % 2);
// or ((n % 2) !== 0).
}
它对无符号数和有符号数都有效。当模量返回-1或1时,它将被转换为true。
Non-modulus解决方案:
var is_finite = isFinite;
var is_nan = isNaN;
function isOdd (discriminant) {
if (is_nan(discriminant) && !is_finite(discriminant)) {
return false;
}
// Unsigned numbers
if (discriminant >= 0) {
while (discriminant >= 1) discriminant -= 2;
// Signed numbers
} else {
if (discriminant === -1) return true;
while (discriminant <= -1) discriminant += 2;
}
return !!discriminant;
}
使用位,codegolfing:
var isEven=n=>(n&1)?"odd":"even";