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


128

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


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

11

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

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

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


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


4
var x = 2;
x % 2 ? oddFunction() : evenFunction();

Я думаю, что этот код неправильный / некорректный. Вы объявляете значение переменной x (в частности, всегда делаете x эквивалентным числу 2) .. первая ошибка. Затем ваша следующая строка просто говорит, может ли переменная x быть разделена на 2, затем выполните oddFunction, иначе / if-not выполните evenFunction ... Проблема с этим подходом состоит в том, что он всегда будет создавать evenFunction - никогда не oddFunction - вот еще одна проблема / ошибка. Пожалуйста, просветите меня, если я ошибаюсь.
Шон Танк Гарви,


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

  }
}

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


1
Вы забредаете из 4chan?
Тодд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.