谁能告诉我一些代码,以确定一个数字在JavaScript是偶数还是奇数?
当前回答
你可以使用一个for语句和一个条件语句来确定一个数字或一组数字是否为奇数:
for (var i=1; i<=5; i++)
if (i%2 !== 0) {
console.log(i)
}
这将打印1到5之间的每一个奇数。
其他回答
这就是我所做的
//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”。
像许多语言一样,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)
这是测试偶数的一个非常常见的习惯用法。
刚刚在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>
许多人误解了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 evenOrOdd(numbers) {
const evenNumbers = [];
const oddNumbers = [];
numbers.forEach(number => {
if (number % 2 === 0) {
evenNumbers.push(number);
} else {
oddNumbers.push(number);
}
});
console.log("Even: " + evenNumbers + "\nOdd: " + oddNumbers);
}
evenOrOdd([1, 4, 9, 21, 41, 92]);
这应该注销: 4, 92 1、9、21日,41岁
对于一个数字:
function evenOrOdd(number) {
if (number % 2 === 0) {
return "even";
}
return "odd";
}
console.log(evenOrOdd(4));
这甚至应该输出到控制台