[英]How to determine if a number is odd in 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));
1代表奇數,0代表偶數。
使用按位AND
運算符。
function oddOrEven(x) { return ( x & 1 ) ? "odd" : "even"; } function checkNumber(argNumber) { document.getElementById("result").innerHTML = "Number " + argNumber + " is " + oddOrEven(argNumber); } checkNumber(17);
<div id="result" style="font-size:150%;text-shadow: 1px 1px 2px #CE5937;" ></div>
如果你不想要一個字符串返回值,而是一個布爾值,使用這個:
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;
}
我是否必須制作一個非常大的數組,它有很多偶數
否。使用模數 (%)。 它為您提供要除的兩個數字的余數。
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(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
這可以通過一小段代碼解決:
function isEven(value) {
return !(value % 2)
}
希望這可以幫助 :)
在 ES6 中:
const isOdd = num => num % 2 == 1;
使用按位,codegolfing:
var isEven=n=>(n&1)?"odd":"even";
像許多語言一樣,Javascript 有一個模運算符%
,它可以找到除法的余數。 如果除以 2 后沒有余數,則數字為偶數:
// this expression is true if "number" is even, false otherwise
(number % 2 == 0)
這是測試偶數的一個非常常見的習慣用法。
一個可以傳遞的簡單函數。 使用模運算符%
:
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();
==真
如果您不確定它是否是 Number ,請通過以下分支進行測試:
if(a.isOdd){
a.isOdd();
}
更新 :
如果您不使用變量:
(5).isOdd()
事實證明,過程范式優於 OOP 范式。 順便說一下,我在這個 FIDDLE 中進行了分析。 但是,OOP 方式仍然是最漂亮的。
<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(可以來自變量)。 If 語句在數為偶數時運行,Else 在數為奇數時運行。
如果您只想知道任何給定的數字是否為奇數:
if (X % 2 !== 0){
}
同樣,用數字或變量替換 X。
您可以使用 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>
isOdd("str")
應該是假的。isOdd(1.223)
和isOdd(-1.223)
應該是假的。isOdd(0)
應該是假的。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 Fiddle(如果需要): https : //jsfiddle.net/9dzdv593/8/
Javascript 1-liner 解決方案。 對於那些不關心可讀性的人。
const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;
當您需要測試某個變量是否為奇數時,您應該首先測試它是否為 integer 。 另外,請注意,當您計算負數的余數時,結果將為負數( -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
}
注意:這里,我們測試value % 2 !== 0
而不是value % 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
使用%
將幫助您做到這一點...
你可以創建幾個函數來為你做這件事......我更喜歡像這樣在Javascript中沒有附加到Number的單獨函數,它也檢查你是否傳遞了數字:
奇函數:
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)
遞歸地減去 2,直到達到 -1 或 0(顯然僅適用於正整數):)
ES6 中的一個襯墊只是因為它很干凈。
const isEven = (num) => num % 2 == 0;
奇數除以二余數為1,偶數除以零余數為0。 因此我們可以使用此代碼
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);
出於某種原因,我必須確保數組的長度少一。 當我不這樣做時,我會在奇數數組的最后一個元素中得到“未定義”。
我會實現它以返回一個布爾值:
function isOdd (n) {
return !!(n % 2);
// or ((n % 2) !== 0).
}
它適用於無符號和有符號數字。 當模數返回-1
或1
它將被轉換為true
。
非模解:
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;
}
通過使用三元運算符,我們可以找到奇偶數:
var num = 2; result = (num % 2 == 0) ? 'even' : 'odd' console.log(result);
另一個使用 filter() 方法的例子:
let even = arr.filter(val => {
return val % 2 === 0;
});
// even = [2,4,6]
這里有這么多答案,但我只想提一點。
通常最好使用% 2
之類的模運算符,但您也可以使用& 1
之類的按位運算符。 他們都會產生相同的結果。 但是它們的優先級不同。 說如果你需要一段代碼
i%2 === p ? n : -n
很好,但是對於按位運算符,您必須這樣做
(i&1) === p ? n : -n
所以就是這樣。
這適用於數組:
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]; let n = numbers.filter((ele) => ele % 2 != 0); console.log(n);
如果奇數返回真
function isOdd(n) {
return Math.abs(n)%2===1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.