Может ли кто-нибудь указать мне какой-нибудь код, чтобы определить, является ли число в JavaScript четным или нечетным?
Как определить, является ли число нечетным в JavaScript
Ответ 1
Используйте приведенный ниже код:
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));
Ответ 2
Используйте побитовый оператор AND
.
function oddOrEven(x) {
return ( x & 1 ) ? "odd" : "even";
}
Если вы не хотите, чтобы возвращаемое значение строки, а скорее логическое, используйте следующее:
var isOdd = function(x) { return x & 1; };
var isEven = function(x) { return !( x & 1 ); };
Ответ 3
Вы можете сделать что-то вроде этого:
function isEven(value){
if (value%2 == 0)
return true;
else
return false;
}
Ответ 4
function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
Ответ 5
Должен ли я сделать массив действительно большой, который имеет много четных чисел
№ Используйте модуль (%). Это дает вам остаток от двух чисел, которые вы делите.
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 будет означать это даже. Все остальное будет означать, что это странно.
Ответ 6
Это можно решить небольшим фрагментом кода:
function isEven(value) {
if (value%2 == 0)
return true;
else
return false;
}
Надеюсь, что это поможет:)
Ответ 7
Как и многие языки, Javascript имеет оператор модуль модуля %
, который находит остаток деления. Если после деления на 2 нет остатка, число четное:
// this expression is true if "number" is even, false otherwise
(number % 2 == 0)
Это очень распространенная идиома для тестирования четных целых чисел.
Ответ 8
Простая функция, которую вы можете передать. Использует оператор по модулю %
:
var is_even = function(x) {
return !(x % 2);
}
is_even(3)
false
is_even(6)
true
Ответ 9
С побитовой, codegolfing:
var isEven=n=>(n&1)?"odd":"even";
Ответ 10
Используйте мои расширения:
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()
Производительность:
Оказывается, что процедурная парадигма лучше, чем парадигма ООП. Кстати, я выполнил профилирование в этом FIDDLE. Тем не менее, путь ООП по-прежнему самый красивый.
Ответ 11
Вычитайте 2 рекурсивно, пока не достигнете -1 или 0 (очевидно, работает только для положительных целых чисел):)
Ответ 12
Вы можете использовать оператор for и условие, чтобы определить, является ли число или ряд чисел нечетным:
for (var i=1; i<=5; i++)
if (i%2 !== 0) {
console.log(i)
}
Это будет печатать каждое нечетное число между 1 и 5.
Ответ 13
Просто выполнил это в 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>
Ответ 14
<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>
Ответ 15
Часто неправильно понимаемое значение Odd
Только целое число может быть нечетным.
-
isOdd("someString")
должен быть ложным.
Строка не является целым числом. -
isOdd(1.223)
иisOdd(-1.223)
должны быть ложными.
Число с плавающей запятой не является целым числом. -
isOdd(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 Fiddle (при необходимости): https://jsfiddle.net/9dzdv593/8/
1-лайнер
Javascript 1-лайнер решение. Для тех, кто не заботится о читабельности.
const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;
Ответ 16
if (X % 2 === 0){
} else {
}
Замените X своим номером (может исходить от переменной). Оператор If работает, когда число четное, Else, когда оно нечетно.
Если вы просто хотите знать, является ли какое-то заданное число нечетным:
if (X % 2 !== 0){
}
Снова замените X числом или переменной.
Ответ 17
Каждое нечетное число при делении на два остатка осталось равным 1 и каждому четному числу при делении на нуль оставляет нуль в качестве остатка. Следовательно, мы можем использовать этот код
function checker(number) {
return number%2==0?even:odd;
}
Ответ 18
Как насчет этого...
var num = 3 //instead get your value here
var aa = ["Even", "Odd"];
alert(aa[num % 2]);
Ответ 19
Это то, что я сделал
//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);
По какой-то причине мне пришлось убедиться, что длина массива меньше на единицу. Когда я этого не делаю, я получаю "undefined" в последнем элементе массива oddNumbers.
Ответ 20
Если вам нужно проверить, является ли какая-то переменная нечетной, сначала нужно проверить , если она целая. Также обратите внимание, что при вычислении остатка на отрицательном числе результат будет отрицательным (-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
Ответ 21
Использование %
поможет вам сделать это...
Вы можете создать несколько функций, чтобы сделать это для вас... Я предпочитаю функции separte, которые не привязаны к Number в 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
Ответ 22
Один лайнер в ES6 только потому, что он чистый.
const isEven = (num) => num % 2 == 0;
Ответ 23
Я бы выполнил это, чтобы вернуть логическое значение:
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;
}
Ответ 24
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]);
Ответ 25
Более функциональный подход в современном 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)
Ответ 26
Используя тернарный оператор, вы можете найти нечетные четные числа:
var num = 2;
result = (num % 2 == 0) ? 'even' : 'odd'
console.log(result);
Ответ 27
Вы можете написать простую функцию:
function isOdd(num) {
if (num % 2 === 0) {
console.log(num + " is pair");
} else {
console.log(num + " is odd");
}
}
isOdd(5);
Вывод 5 будет нечетным.
Ответ 28
function isOdd(num) {
if (num % 2 !== 0) {
return true;
} else {
return false;
}
}
Ответ 29
это работает для массивов:
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));
это должно выводиться даже на консоль
Ответ 30
Вот простой рабочий пример:
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>