Finden Sie heraus, ob die Variable durch 2 teilbar ist

128

Wie finde ich heraus, ob eine Variable durch 2 teilbar ist? Außerdem muss ich eine Funktion ausführen, wenn dies der Fall ist, und eine andere Funktion ausführen, wenn dies nicht der Fall ist.

sadmicrowave
quelle
6
@SilentGhost: Bekommen die Leute heutzutage wirklich jQuery-Hausaufgaben?
Andy E
4
Ich weiß nichts darüber, Andy, aber die Leute wissen sicher, wie sie ihre Tags durcheinander bringen können.
SilentGhost
2
@OP: jQuery ist nicht die Antwort auf alles, was Sie in JavaScript tun möchten;)
Mike Atlas
8
@ Mike Falsch! Sie sollten dafür das jQuery Basic Arithmetic Plugin verwenden! Das ist der richtige Weg ...: P (Ironie)
Pablo Cabrera

Antworten:

313

Modul verwenden:

// Will evaluate to true if the variable is divisible by 2
variable % 2 === 0  
Andy E.
quelle
30
Liebe es! Einfach, leicht, und Sie haben mich nicht wie einen Idioten gefühlt, weil ich die Frage gestellt habe ... was (für alle anderen, die es noch nicht wissen) für neue jQuery / Javascript-Entwickler eine große Sache ist.
Sadmicrowave
6
@sadmicrowave: Wir fangen alle irgendwann als Anfänger an. Das eigentliche Problem ist das Fehlen informativer Tutorials. Die Tutorials für absolute Anfänger sollten den Unterschied zwischen JavaScript und jQuery verdeutlichen und sie tauchen direkt in das jQuery-Zeug ein.
Andy E
3
Der erste Code, den ich jemals geschrieben habe, war in JavaScript, und das war ein Popup-Fenster mit der Begrüßungsbox "Willkommen". Das Jahr war 1997 und es war für meine Geocities-Homepage. Wir fangen definitiv alle irgendwo an (aber auch ein formelles Training hilft).
Mike Atlas
sollte es nicht sein: Variable% 2 == 0 Erziehe mich, wenn ich falsch liege.
Sean Tank Garvey
28

Im Ernst, es gibt kein jQuery-Plugin für ungerade / gerade Prüfungen?

Nun, nicht mehr - Veröffentlichung von "Oven", einem jQuery-Plugin unter der MIT-Lizenz, um zu testen, ob eine bestimmte Zahl ungerade / gerade ist.

Der Quellcode ist auch unter verfügbar http://jsfiddle.net/7HQNG/

Testsuiten finden Sie unter 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);
    };
})();​
Anurag
quelle
7
Beeindruckend. Witzig, aber Sie wissen, dass jemand dies tatsächlich nutzen wird?
Tim Down
7
@ Tim Down: Ich frage mich, ob jemand dieses jQuery Basic Arithmetic Plugin verwendet ? Als nächstes auf der Liste ein jQuery Zufallszahlengenerator ;-)
Andy E
9
Es gibt so viel, was jQuery tun kann, wie das Erstellen von Variablen, Funktionen usw., das immer noch mit rohem JavaScript ausgeführt wird . Einfach unglaublich ;-)
Anurag
4
@Andy - ROFL unter diesem Link und dem SO-Bild - doxdesk.com/img/updates/20091116-so-large.gif Ich denke, die Antwort "jQuery verwenden" wird jetzt in Javascript ein Allzeithoch erreichen :)
Anurag
Sie haben Word-Dokument erklären verwenden mich es? @ Anurag
Todd
11

Sie können den Moduloperator wie folgt verwenden, ohne dass jQuery erforderlich ist. Ersetzen Sie einfach diealerts Sie durch Ihren Code.

var x = 2;
if (x % 2 == 0)
{
  alert('even');
}
else
{
  alert('odd')
}
wsanville
quelle
11

Sie können es besser machen (bis zu 50% schneller als der Modulo-Operator):

ungerade: x & 1 gerade :! (x & 1)

Referenz: Hochleistungs-JavaScript, 8. -> Bitweise Operatoren

Klapaucjusz TF
quelle
Dies ist eine großartige, eigentlich die beste Antwort. Es erfordert jedoch Kenntnisse der bitweisen Operatoren.
Sean Tank Garvey
8

Du kannst auch:

if (x & 1)
 itsOdd();
else
 itsEven();
Alex K.
quelle
4
var x = 2;
x % 2 ? oddFunction() : evenFunction();
Pablo Cabrera
quelle
Ich denke, dieser Code ist falsch / fehlerhaft. Sie deklarieren einen Wert für die Variable x (wobei x immer der Zahl 2 entspricht). Erster Fehler. In Ihrer nächsten Zeile steht dann einfach, ob die Variable x durch 2 geteilt werden kann, dann die ungerade Funktion ausführen, andernfalls die gerade Funktion ausführen ... Das Problem bei diesem Ansatz ist, dass immer die gerade Funktion erzeugt wird - niemals die ungerade Funktion - Das ist ein weiteres Problem / Fehler. Bitte erziehe mich, wenn ich falsch liege.
Sean Tank Garvey
4
if (x & 1)
 itIsOddNumber();
else
 itIsEvenNumber();
sagar
quelle
2

Hoffe das hilft.

let number = 7;

if(number%2 == 0){      

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

}else{

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

}

Hier ist eine vollständige Funktion, die die Parität Ihrer Eingabe in der Konsole protokolliert.

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

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

  }else{

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

  }
}
Edgar256
quelle
1

Bitte schreiben Sie den folgenden Code in Ihre Konsole:

var isEven = function(deep) {

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

Bitte beachten Sie : Es wird true zurückgegeben, wenn die eingegebene Nummer auch sonst falsch ist.

Deepak Upadhyay
quelle
1
Vielen Dank für die Antwort, aber dies ist im Wesentlichen die gleiche wie die akzeptierte Antwort. Sie haben sie einfach in eine Funktion eingewickelt. Wie auch immer, danke für
Ihren
1

Verwenden Sie Modul, aber .. Die oben akzeptierte Antwort ist etwas ungenau. Ich glaube, weil x ein Zahlentyp in JavaScript ist, sollte der Operator eine doppelte Zuweisung anstelle einer dreifachen Zuweisung sein, wie folgt:

x % 2 == 0

Denken Sie daran, auch Ihre Variablen zu deklarieren, damit diese Zeile offensichtlich nicht eigenständig geschrieben werden kann. :-) Wird normalerweise als ifAussage verwendet. Hoffe das hilft.

Sean Tank Garvey
quelle
-2

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

array.each {| x | setzt x, wenn x% 2 == 0}

Rubin: D.

2 4 6 8 10

SteveO
quelle
1
Sie wandern von 4chan herüber?
Todd