26 ответов:
используйте следующий код:
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"; }Если вы не хотите возвращать строковое значение, а скорее логическое, используйте это:
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(value) { if (value%2 == 0) return true; else return false; }надеюсь, что это помогает :)
Как и многие языки, 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();==False
a.isOdd();= = True
если вы не уверены, что это число, проверьте его следующим ветвлением:
if(a.isOdd){ a.isOdd(); }обновление :
если вы не будете использовать переменную :
(5).isOdd()производительность :
оказывается, что процедурная парадигма лучше, чем парадигма ООП . Кстати, я выступал профилирование в этой скрипке . Однако, путь ООП все еще самый красивый .
вычесть 2 к нему рекурсивно, пока вы не достигнете либо -1 или 0 (работает только для положительных целых чисел, очевидно):)
вы можете использовать оператор for и условие, чтобы определить, является ли число или серия чисел нечетными:
for (var i=1; i<=5; i++) if (i%2 !== 0) { console.log(i) }это выведет каждое нечетное число между 1 и 5.
только что выполнил это в Adobe Dreamweaver..it работает отлично. я использовал if (isNaN(mynmb))
чтобы проверить, является ли данное значение числом или нет, и я тоже использовал математика.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 своим номером (может исходить из переменной). Оператор If выполняется, когда число четное, остальное, когда оно нечетное.
Если вы просто хотите знать, если какое-либо число нечетное:
if (X % 2 !== 0){ }снова замените X на число или переменную.
каждое нечетное число при делении на два оставляет остаток как 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);по какой-то причине я должен был убедиться, что длина массива меньше на единицу. Когда я этого не делаю, я получаю "неопределенный" в последнем элементе массива oddNumbers.
когда вам нужно проверить, если какая-то переменная нечетна, вы должны сначала проверить если это число. Кроме того, обратите внимание, что при расчете остатка на отрицательное число, результат будет отрицательным (
-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 }Примечание: здесь мы проверяем
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
предупреждение! Я проверил все остальные ответы, и они не верны.
только целое число может быть нечетным.
isOdd("someString")должно быть false.
Строка не является целым числом.isOdd(1.223)иisOdd(-1.223)должно быть false.
Поплавок не является целым числом.isOdd(0)должно быть false.
Ноль-это четное целое число (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 Fiddle (при необходимости):https://jsfiddle.net/9dzdv593/8/
рассуждения, которые вошли в код
- возвращаемый тип должен быть логическим. Ключевые слова
trueилиfalseявляются родными, поэтому нет необходимости возвращать строки, 0 или 1, которые имеют неоднозначные значения.- Javascript конвенция должна использовать верблюд-футляр
isOdd- An
ifоператор должен иметь фигурные скобки{}. Отсутствие фигурных скобок может привести к проблемам с минимизацией, замедлению компиляции Javascript и неразборчивости кода, если возникает проблема форматирования.
используя
%поможет вам сделать это...вы можете создать несколько функций, чтобы сделать это за вас... Я предпочитаю функции separte, которые не привязаны к номеру в 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 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 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:
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>
используя тернарный оператор, вы можете найти нечетные четные числа:
var num = 2; result = (num % 2 == 0) ? 'even' : 'odd' console.log(result);

Comments