如何确定一个数字是否在JavaScript中是奇怪的

任何人都可以指向我的一些代码,以确定在JavaScript中的数字是偶数还是奇数?

使用下面的代码:

 function 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)); 

使用按位AND运算符。

 function oddOrEven(x) { return ( x & 1 ) ? "odd" : "even"; } 

如果你不想要一个string返回值,而是一个布尔值,使用这个:

 var isOdd = function(x) { return x & 1; }; var isEven = function(x) { return !( x & 1 ); }; 

你可以做这样的事情:

 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); } 

我是否必须创build一个非常大的数组,并且有很多偶数

哦天啊,不。 使用模量(%)。 它给你你分开的两个数字的其余部分。

 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意味着它是平坦的。 别的什么都会意味着很奇怪。

这可以用一小段代码来解决:

 function isEven(value) { if (value%2 == 0) return true; else return false; } 

希望这可以帮助 :)

像许多语言一样,Javascript有一个模数运算符% ,可以find除法的其余部分。 如果在除以2之后没有余数,则数字是偶数:

 // this expression is true if "number" is even, false otherwise (number % 2 == 0) 

这是testing甚至整数的一个非常常见的习惯用法。

一个简单的function,你可以传递。 使用模运算符%和三运算符?

 var is_even = function(x) { return !(x % 2); } is_even(3) false is_even(6) true 

使用我的扩展:

 Number.prototype.isEven=function(){ return this % 2===0; }; Number.prototype.isOdd=function(){ return !this.isEven(); } 

然后

 var a=5; a.isEven(); 

==假

  a.isOdd(); 

==真

如果您不确定它是否是数字,请按以下分支进行testing:

 if(a.isOdd){ a.isOdd(); } 

更新:

如果你不使用variables:

 (5).isOdd() 

性能:

事实certificate,程序范式比OOP范式更好。 顺便说一句,我在这个FIDDLE进行分析 。 但是,面向对象的方式仍然是最漂亮的。

在这里输入图像说明

recursion地减去2,直到达到-1或0(显然只对正整数有效):)

您可以使用for语句和条件来确定一个数字或一系列数字是否是奇数:

 for (var i=1; i<=5; i++) if (i%2 !== 0) { console.log(i) } 

这将打印1和5之间的每一个奇数。

刚刚在Adobe Dreamweaver中执行这一个。它完美的作品。 我用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> 
  <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> 
 if (X % 2 === 0){ } else { } 

用你的号码代替X(可以来自一个variables)。 If语句在数字是偶数的时候运行,否则在奇数的时候运行。

如果你只是想知道给定的数字是否是奇数:

 if (X % 2 !== 0){ } 

再次,用一个数字或variablesreplaceX.

每个奇数除以2时的余数为1,除以零时的每个偶数剩下一个零。 因此我们可以使用这个代码

  function checker(number) { return number%2==0?even:odd; } 

这个怎么样…

  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); 

出于某种原因,我不得不确保数组的长度less于一个。 当我不这样做时,在oddNumbers数组的最后一个元素中出现“undefined”。

当你需要testing某个variables是否为奇数时,你应该首先testing它是否是整数 。 另外,请注意,当您计算负数时的余数时,结果将为负数( -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 } 

如果Number.isInteger可用,还可以将此代码简化为:

 function isOdd(value) { return Number.isInteger(value) // value should be integer value % 2 !== 0; // value should not be even } 

注意:在这里,我们testingvalue % 2 !== 0而不是value % 2 === 1是因为-3 % 2 === -1 。 如果你不想-1通过这个testing,你可能需要改变这一行。

以下是一些testing用例:

 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 

警告! 我已经检查了所有其他的答案,他们是不正确的。

只有一个整数可以是奇数。

  • isOdd("someString")应该是false。
    一个string不是一个整数。
  • isOdd(1.223)isOdd(-1.223)应该是假的。
    浮点数不是一个整数。
  • isOdd(0)应该是false。
    零是一个偶数( https://en.wikipedia.org/wiki/Parity_of_zero )。
  • isOdd(-1)应该是true。
    这是一个奇数。

我的解决scheme

 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/

进入代码的推理

  • 返回types应该是一个布尔值。 关键字truefalse是本地的,所以不需要返回 – string0或1 – 它们含义不明确。
  • Javascript约定是使用camel-case isOdd
  • if语句应该使用大括号{} 。 缺less大括号可能导致缩小问题,JavaScript编译较慢,并且如果发生格式化问题,则代码不清晰。

我会实现这个返回一个布尔值:

 function isOdd (n) { return !!(n % 2); // or ((n % 2) !== 0). } 

它将在无符号和有符号数字上工作。 当模数返回-11它将被翻译为true

非模数解决scheme:

 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; } 

使用%将帮助你做到这一点…

你可以创build几个函数来为你做…我喜欢sebas这些函数,这些函数不会附加到JavaScript中的数字,这样也会检查你是否传递数字:

奇function:

 var isOdd = function(num) { return 'number'!==typeof num ? 'NaN' : !!(num % 2); }; 

甚至function:

 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 
  var sumSoFar = 0; var oddnumber=0; function Sum(data){ for(var i=0;i<data.length;i++){ if(data[i] % 2 == 1){ console.log(data[i]); sumSoFar += data[i]; }else{ oddnumber+= data[i]; } } console.log(sumSoFar); console.log(oddnumber); } var sumOfNum=Sum([3,2,4,5,4,3,3,4,3,6,4]); 

现代javascript中更多function的方法:

 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 myFunction() { userInput = document.getElementById("myValue").value; if (userInput%2 == 0) { document.getElementById("demo").innerHTML= "even"; } else { document.getElementById("demo").innerHTML = "odd"; } 
 Input:<input id="myValue"> <button onclick="myFunction()">Try it</button> 

通过使用三元运算符,我们可以find奇数偶数:

 var num = 2; result = (num % 2 == 0) ? 'even' : 'odd' console.log(result);