谁能告诉我一些代码,以确定一个数字在JavaScript是偶数还是奇数?
使用下面的代码:
函数 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表示偶数。
你可以这样做:
function isEven(value){
if (value%2 == 0)
return true;
else
return false;
}
function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
if (X % 2 === 0){
} else {
}
用你的数字替换X(可以来自一个变量)。If语句在数字为偶数时运行,Else语句在数字为奇数时运行。
如果你只想知道某个给定的数字是否是奇数:
if (X % 2 !== 0){
}
同样,用一个数字或变量替换X。
你可以使用一个for语句和一个条件语句来确定一个数字或一组数字是否为奇数:
for (var i=1; i<=5; i++)
if (i%2 !== 0) {
console.log(i)
}
这将打印1到5之间的每一个奇数。
像许多语言一样,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)
这是测试偶数的一个非常常见的习惯用法。
使用按位AND运算符。
函数oddOrEven(x) { Return (x & 1) ?“odd”:“偶数”; } 函数checkNumber(argNumber) { . getelementbyid(“结果”)。innerHTML = "Number " + argNumber + " is " + oddOrEven(argNumber); } checkNumber (17); < span style="font- family:宋体;"> < / div >
如果你不想要一个字符串返回值,而是一个布尔值,使用这个:
var isOdd = function(x) { return x & 1; };
var isEven = function(x) { return !( x & 1 ); };
我是否需要创建一个包含很多偶数的大数组
不。使用模量(%)。它给出了你要除的两个数的余数。
Ex. 2 % 2 = 0 because 2/2 = 1 with 0 remainder.
Ex2. 3 % 2 = 1 because 3/2 = 1 with 1 remainder.
Ex3. -7 % 2 = -1 because -7/2 = -3 with -1 remainder.
这意味着,如果你对任何数字x取余2,你得到的结果不是0就是1或者-1。0表示它是偶数。其他的都是奇数。
一个可以传递的简单函数。使用模运算符%:
var is_even = function(x) {
return !(x % 2);
}
is_even(3)
false
is_even(6)
true
刚刚在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>
奇数除以2剩下余数为1,偶数除以0剩下余数为0。因此我们可以使用这段代码
function checker(number) {
return number%2==0?even:odd;
}
使用我的扩展:
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()
性能:
事实证明,过程式范式比面向对象范式更好。 顺便说一下,我在这个小提琴中进行了剖析。然而,面向对象的方式仍然是最漂亮的。
这样如何……
var num = 3 //instead get your value here
var aa = ["Even", "Odd"];
alert(aa[num % 2]);
这就是我所做的
//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”。
<script>
function even_odd(){
var num = document.getElementById('number').value;
if ( num % 2){
document.getElementById('result').innerHTML = "Entered Number is Odd";
}
else{
document.getElementById('result').innerHTML = "Entered Number is Even";
}
}
</script>
</head>
<body>
<center>
<div id="error"></div>
<center>
<h2> Find Given Number is Even or Odd </h2>
<p>Enter a value</p>
<input type="text" id="number" />
<button onclick="even_odd();">Check</button><br />
<div id="result"><b></b></div>
</center>
</center>
</body>
许多人误解了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;
通过使用三元运算符,我们可以找到奇数和偶数:
Var num = 2; 结果= (num % 2 == 0) ?'even': '奇数' console.log(结果);
当您需要测试某个变量是否是奇数时,您应该首先测试它是否是整数。另外,请注意,当您计算负数的余数时,结果将是负数(-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
我将实现这个来返回一个布尔值:
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;
}
使用%将帮助您做到这一点…
你可以创建几个函数来为你做这件事…我更喜欢单独的函数,这些函数没有附加到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
现代javascript中更函数化的方法:
const NUMBERS = "nul one two three four five six seven ocho nueve".split(" ")
const negate = f=> (...args)=> !f(...args)
const isOdd = n=> NUMBERS[n % 10].indexOf("e")!=-1
const isEven = negate(isOdd)
这适用于数组:
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));
这甚至应该输出到控制台
一个方法来知道数字是否为奇数
Let numbers = [11,20,2,5,17,10]; 让n = numbers.filter((ele) => ele % 2 != 0); console.log (n);
另一个使用filter()方法的例子:
let even = arr.filter(val => {
return val % 2 === 0;
});
// even = [2,4,6]
若为奇数则返回true
function isOdd(n) {
return Math.abs(n)%2===1;
}
如果为偶数则返回true
function isEven(n) {
return Math.abs(n)%2!==1;
}
我使用Math.abs()以防得到负数
这里有很多答案,但我只想提一点。
通常最好使用模运算符,如% 2,但也可以使用位运算符,如& 1。两者都会产生相同的结果。然而,它们的先例不同。如果你需要一段代码,比如
i%2 === p ? n : -n
这很好,但是对于位运算符,你必须这样做
(i&1) === p ? n : -n
就是这样。