Найти, делится ли переменная на 2

128

Как определить, делится ли переменная на 2? Кроме того, мне нужно выполнить функцию, если она есть, и выполнить другую функцию, если это не так.

sadmicrowave
источник
6
@SilentGhost: действительно ли в наши дни люди получают домашнее задание по jQuery?
Andy E
4
не знаю об этом, Энди, но люди наверняка знают, как испортить свои теги.
SilentGhost
2
@OP: jQuery - это не ответ на все, что вы, возможно, захотите сделать в JavaScript;)
Майк Атлас,
8
@ Майк Не прав! Для этого вам следует использовать плагин базовой арифметики jQuery! Это путь ...: P (Ирония)
Пабло Кабрера

Ответы:

312

Используйте модуль:

// Will evaluate to true if the variable is divisible by 2
variable % 2 === 0  
Энди Э
источник
30
любить это! просто, легко, и вы не заставили меня почувствовать себя идиотом, задав вопрос ... который (для всех остальных, кто еще не знает) имеет большое значение для новых разработчиков jQuery / Javascript.
sadmicrowave
6
@sadmicrowave: в какой-то момент мы все начинаем как новички. Настоящая проблема заключается в отсутствии информативных руководств. Учебники для абсолютных новичков должны прояснить разницу между JavaScript и jQuery, и они просто погружаются прямо в материал jQuery.
Энди Э
3
Первый код, который я когда-либо писал, был на JavaScript, и это было всплывающее окно с приветствием. Это был 1997 год для моей домашней страницы Geocities. Мы определенно все с чего-то начинаем (хотя и формальное обучение тоже помогает).
Майк Атлас,
не должно быть: переменная% 2 == 0 Обучай меня, если я ошибаюсь.
Шон Танк Гарви,
28

Серьезно, нет плагина jQuery для проверки нечетности / четности?

Ну, больше нет - выпуск "Oven" плагина jQuery под лицензией MIT для проверки четности или нечетности заданного числа.

Исходный код также доступен на http://jsfiddle.net/7HQNG/

Наборы тестов доступны на http://jsfiddle.net/zeuRV/

(function() {
    /*
     * isEven(n)
     * @args number n
     * @return boolean returns whether the given number is even
     */
    jQuery.isEven = function(number) {
        return number % 2 == 0;
    };

    /* isOdd(n)
     * @args number n
     * @return boolean returns whether the given number is odd
     */
    jQuery.isOdd = function(number) {
        return !jQuery.isEven(number);
    };
})();​
Анураг
источник
7
Вот это да. Забавно, но вы понимаете, что кто-то действительно этим воспользуется?
Тим Даун
7
@Tim Down: Интересно, использует ли кто-нибудь этот плагин для базовой арифметики jQuery ? Далее в списке генератор случайных чисел jQuery ;-)
Энди Э
9
JQuery может многое сделать, например, создавать переменные, функции и т. Д., Но это все еще делается с помощью необработанного JavaScript . Просто невероятно ;-)
Anurag
4
@Andy - ROFL по этой ссылке и изображение SO - doxdesk.com/img/updates/20091116-so-large.gif Я полагаю, что ответ «использовать jQuery» сейчас достигнет рекордно высокого уровня в Javascript :)
Anurag
У вас есть текстовый документ, объясняющий, как мне это использовать? @Anurag
Тодд
11

Вы можете использовать оператор модуля, как этот, без jQuery. Просто замените на alertsсвой код.

var x = 2;
if (x % 2 == 0)
{
  alert('even');
}
else
{
  alert('odd')
}
wsanville
источник
11

Вы можете сделать это лучше (до 50% быстрее, чем оператор по модулю):

нечетное: x & 1 четное:! (x & 1)

Ссылка: Высокопроизводительный JavaScript, 8. -> Побитовые операторы

Клапауцюш Т.Ф.
источник
Это отличный, на самом деле лучший ответ. Однако это требует знания побитовых операторов ..
Шон Танк Гарви,
8

Вы также можете:

if (x & 1)
 itsOdd();
else
 itsEven();
Алекс К.
источник
4
var x = 2;
x % 2 ? oddFunction() : evenFunction();
Пабло Кабрера
источник
Я думаю, что этот код неправильный / некорректный. Вы объявляете значение переменной x (в частности, всегда делаете x эквивалентным числу 2) .. первая ошибка. Затем ваша следующая строка просто говорит, может ли переменная x быть разделена на 2, затем выполните oddFunction, иначе / if-not выполните evenFunction ... Проблема с этим подходом состоит в том, что он всегда будет создавать evenFunction - никогда не oddFunction - вот еще одна проблема / ошибка. Пожалуйста, просветите меня, если я ошибаюсь.
Шон Танк Гарви,
4
if (x & 1)
 itIsOddNumber();
else
 itIsEvenNumber();
Сагар
источник
2

Надеюсь это поможет.

let number = 7;

if(number%2 == 0){      

  //do something;
  console.log('number is Even');  

}else{

  //do otherwise;
  console.log('number is Odd');

}

Вот полная функция, которая будет записывать на консоль четность вашего ввода.

const checkNumber = (x) => {
  if(number%2 == 0){      

    //do something;
    console.log('number is Even');  

  }else{

    //do otherwise;
    console.log('number is Odd');

  }
}
Edgar256
источник
1

Напишите в консоли следующий код:

var isEven = function(deep) {

  if (deep % 2 === 0) {
        return true;  
    }
    else {
        return false;    
    }
};
isEven(44);

Обратите внимание: он вернет истину, если введенное число даже не соответствует действительности.

Дипак Упадхьяй
источник
1
спасибо за ответ, но это по сути то же самое, что и принятый ответ, вы просто обернули его функцией. В любом случае, спасибо за участие
sadmicrowave 01
1

Используйте модуль, но ... Приведенный выше ответ немного неточен. Я считаю, что, поскольку x - это числовой тип в JavaScript, оператор должен быть двойным присваиванием вместо тройного, например:

x % 2 == 0

Не забудьте также объявить свои переменные, поэтому очевидно, что эта строка не может быть написана отдельно. :-) Обычно используется как ifутверждение. Надеюсь это поможет.

Шон Танк Гарви
источник
-2

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

array.each {| x | помещает x, если x% 2 == 0}

рубин: D

2 4 6 8 10

SteveO
источник
1
Вы забредаете из 4chan?
Тодд