So stellen Sie fest, ob eine Zahl in JavaScript ungerade ist

245

Kann mich jemand auf einen Code verweisen, um festzustellen, ob eine Zahl in JavaScript gerade oder ungerade ist?

Jannie Theunissen
quelle
1
@DavidThomas Ich stimme teilweise zu, aber ich habe zwei Einschränkungen: 1. Wenn ich mich entscheiden müsste, wäre es mir lieber, wenn ein Programmiereranfänger etwas über den %Operator wüsste als &und 2. Obwohl &es theoretisch schneller ist, spielt es wirklich keine Rolle .
Kojiro
3
@kojiro: Ich möchte lieber, dass einem Lernenden mehr (gültige) Optionen angeboten werden. Außerdem hatte ich noch nie daran gedacht, bitweise und auf diese Weise zu verwenden, also ist es eine interessante Einstellung. Wie auch immer, da es sich um einen Betrüger handelt, habe ich mich für die Fusion mit der bereits bestehenden Frage gemeldet. Hoffentlich gehen dann die Antworten hier (zumindest diese bestimmte Antwort) nicht verloren.
David sagt, Monica
1
@kojiro Ich muss leider sagen, dass Ihre Geige ziemlich nutzlos ist, da die Funktionsaufrufe den größten Teil der Rechenzeit in Anspruch nehmen. Aber niemand wird einen Funktionsaufruf verwenden, um festzustellen, ob eine Zahl ungerade oder gerade ist ... Ich habe eine dritte Überarbeitung Ihres Tests vorgenommen, aber ich bin jetzt auf meinem Telefon ...
MaxArt
1
mögliches Duplikat von Testen, ob ein Wert ungerade oder gerade ist
bummi

Antworten:

346

Verwenden Sie den folgenden Code:

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 steht für eine ungerade Zahl, während 0 für eine gerade Zahl steht.

Chii
quelle
97
Beachten Sie, dass dies zurückgegeben wird 0oder 1(oder NaNwenn Sie etwas füttern, das keine Zahl ist und nicht zu einer gezwungen werden kann), was in den meisten Situationen gut funktioniert. Aber wenn Sie eine echte wollen trueoder false:return (num % 2) == 1;
TJ Crowder
3
Ja, gute Anmerkung zum NaN. Aber normalerweise soll Javascript wahr oder falsch sein, weshalb ich es so geschrieben habe, wie ich es getan habe.
Chii
9
Zur Verdeutlichung gibt der Modulo-Operator (%) den Rest einer Division an. Also 3% 2 wäre 3/2, so dass 1 als Rest übrig bleibt, daher werden 3% 2 1 zurückgeben.
Abuh
6
Nach dem, was TJ gesagt hat, gibt dies einen Bruch zurück, wenn numes sich nicht um eine Ganzzahl handelt. Was beim Vergleichen immer noch funktioniert isOdd(1.5)==true(weil ein Bruchwert nicht gleich ist true), aber es wäre besser, wenn die Funktion zurückgegeben würde trueoder falsewie durch den Namen "isOdd" impliziert.
nnnnnn
6
Sie können auch tun return !!(num % 2), um einen Booleschen Wert zu erhalten
Duncan
115

Verwenden Sie den bitweisen ANDOperator.

function oddOrEven(x) {
  return ( x & 1 ) ? "odd" : "even";
}

function checkNumber(argNumber) {
  document.getElementById("result").innerHTML = "Number " + argNumber + " is " + oddOrEven(argNumber);
}
 
checkNumber(17);
<div id="result" style="font-size:150%;text-shadow: 1px 1px 2px #CE5937;" ></div>

Wenn Sie keinen String-Rückgabewert, sondern einen booleschen Wert möchten, verwenden Sie Folgendes:

var isOdd = function(x) { return x & 1; };
var isEven  = function(x) { return !( x & 1 ); };
0x499602D2
quelle
5
+1, deine Antwort schlägt definitiv meine, ganz zu schweigen davon, dass du die einzige Antwort hast, die nicht verwendet wird X % Y!
s0d4pop
4
Ich bin nicht sicher, ob mein Test genau ist, aber das bitweise UND scheint für eine feste Zahl 40-mal langsamer als der Modulo-Operator und für eine Zufallszahl 2-mal langsamer zu sein: jsperf.com/odd-or-even
Blender
8
Beachten Sie, dass dies für Zahlen, die es auch nicht sind, "ungerade" oder "gerade" zurückgibt (z. B. 3.14).
nnnnnn
2
Oder : function isEven(n){return !(n & 1);}.
RobG
7
@Gnuey Jede Zahl besteht aus einer Reihe von Bits. Bei allen ungeraden Zahlen ist das niedrigstwertige Bit (ganz rechts) auf 1 und alle geraden Zahlen auf 0 gesetzt. Es wird x & 1geprüft, ob das letzte Bit in der Zahl gesetzt ist (da 1 eine Zahl ist, bei der alle Bits bis auf das niedrigstwertige Bit auf 1 gesetzt sind ): Wenn es ist , ist die Zahl ungerade, sonst auch.
0x499602D2
31

Sie könnten so etwas tun:

function isEven(value){
    if (value%2 == 0)
        return true;
    else
        return false;
}
TNC
quelle
9
Es scheint nicht, dass Sie wissen, was ein Boolescher Wert ist. if (condition) { answer=true; } else { answer=false; }ist nur eine unnötig wortreiche Version von answer = (bool) condition;. Reduzieren Sie Ihre Funktion auf function isEven(value) { return (bool) (value%2 == 0); }und wir werden alle glücklich sein.
awm
9
Keine Notwendigkeit, snarky zu werden, weil ich etwas anders programmiere.
TNC
5
@awm - Es scheint , wie Sie JavaScript nicht wissen. Sie können nicht mit booleschen Werten umwandeln (bool)(dies führt zu einem Fehler), und Sie müssen auf keinen Fall: return value%2 == 0;den Job ausführen, da der ==Operator einen booleschen Wert zurückgibt.
nnnnnn
2
Wow, habe ich das wirklich geschrieben? Ja, das ist offensichtlich falsch. sollte so etwas sein answer = !!(condition). Der Punkt, den ich ansprechen wollte, ist natürlich, dass Sie sich nur return value%2==0mit der Bedingung beschäftigen können und müssen.
awm
Ich finde es elegant: value%2===0
Carlodurso
17
function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
CloudyMarble
quelle
13

Muss ich ein Array wirklich groß machen, das viele gerade Zahlen hat?

Nein. Modul (%) verwenden. Sie erhalten den Rest der beiden Zahlen, die Sie teilen.

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.

Das heißt, wenn Sie eine Zahl x um 2 modifizieren, erhalten Sie entweder 0 oder 1 oder -1. 0 würde bedeuten, dass es gerade ist. Alles andere würde bedeuten, dass es seltsam ist.

Isaac Fife
quelle
8

Dies kann mit einem kleinen Codeausschnitt gelöst werden:

function isEven(value) {
    if (value%2 == 0)
    return true;
else
    return false;
}

Hoffe das hilft :)

s0d4pop
quelle
6

Wie viele Sprachen hat Javascript einen Moduloperator% , der den Rest der Teilung findet. Wenn nach der Division durch 2 kein Rest mehr vorhanden ist, ist eine Zahl gerade:

// this expression is true if "number" is even, false otherwise
(number % 2 == 0)

Dies ist eine sehr verbreitete Redewendung zum Testen auf gerade ganze Zahlen.

pb2q
quelle
3
Der Modul kann jedoch für negative Werte schwierig / undefiniert sein. Beachten Sie unbedingt die entsprechende Sprachspezifikation.
6

Mit bitweisem Codegolfing:

var isEven=n=>(n&1)?"odd":"even";
Katia Punter
quelle
5

Eine einfache Funktion, die Sie weitergeben können. Verwendet den Modulo-Operator %:

var is_even = function(x) {
    return !(x % 2); 
}

is_even(3)
false
is_even(6)
true
dgh
quelle
1
Wenn Ihre Ergebnisse im ternären Operator entweder "wahr" oder "falsch" sind, benötigen Sie den ternären Operator wirklich nicht. Hier könnten / sollten Sie einfach tun:return !(x % 2);
dom_watson
4

Verwenden Sie meine Erweiterungen:

Number.prototype.isEven=function(){
     return this % 2===0;
};

Number.prototype.isOdd=function(){
     return !this.isEven();
}

dann

var a=5; 
 a.isEven();

== Falsch

 a.isOdd();

== Richtig

Wenn Sie nicht sicher sind, ob es sich um eine Zahl handelt, testen Sie sie anhand der folgenden Verzweigung:

if(a.isOdd){
    a.isOdd();
}

UPDATE:

Wenn Sie keine Variable verwenden würden:

(5).isOdd()

Leistung:

Es stellt sich heraus, dass das prozedurale Paradigma besser ist als das OOP-Paradigma. Übrigens habe ich in diesem FIDDLE ein Profiling durchgeführt . Der OOP-Weg ist jedoch immer noch am schönsten.

Geben Sie hier die Bildbeschreibung ein

Abdennour TOUMI
quelle
Danke Alter, für diese Logik, im Interview fragte jemand diese Art von Logik, konnte nicht antworten, jetzt habe ich es, danke .. aber gibt es einen Vorteil in der Leistung, wenn ich diese Methode befolge? wir hätten isEven (x) schreiben können; usw.
Shoib Mohammed A
@ShoibMohammedA: Vergleich wurde durchgeführt! jsfiddle.net/abdennour/jL2uyksa/3
Abdennour TOUMI
-1 Erweiterte native Prototypfunktionen nicht. ( stackoverflow.com/questions/14034180/… )
tfmontague
3

Subtrahiere 2 rekursiv davon, bis du entweder -1 oder 0 erreichst (funktioniert natürlich nur für positive ganze Zahlen) :)

asymmetrisch
quelle
Mit negativen Zahlen erhöhen Sie stattdessen 2 darauf
Hydroper
Und es dauert eine verdammt lange Zeit, wenn n = 2 ^ 52 und eine unendliche Menge für n> 2 ^ 53
rioV8
3

Sie können eine for-Anweisung und eine Bedingung verwenden, um festzustellen, ob eine Zahl oder eine Reihe von Zahlen ungerade ist:

for (var i=1; i<=5; i++) 
if (i%2 !== 0) {
    console.log(i)
}

Dadurch wird jede ungerade Zahl zwischen 1 und 5 gedruckt.

frecher Bastard
quelle
3

Habe gerade dieses in Adobe Dreamweaver ausgeführt. Es funktioniert perfekt. ich benutzte if (isNaN (mynmb)) verwendet.

um zu überprüfen, ob der angegebene Wert eine Zahl ist oder nicht, und ich habe auch Math.abs (mynmb% 2) verwendet , um eine negative Zahl in eine positive umzuwandeln und zu berechnen

    <!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>
Srivastav
quelle
3
   <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>
Kirandeep Singh
quelle
2
if (X % 2 === 0){
} else {
}

Ersetzen Sie X durch Ihre Nummer (kann von einer Variablen stammen). Die If-Anweisung wird ausgeführt, wenn die Zahl gerade ist, die Else-Anweisung, wenn sie ungerade ist.

Wenn Sie nur wissen möchten, ob eine bestimmte Zahl ungerade ist:

if (X % 2 !== 0){
}

Ersetzen Sie X erneut durch eine Zahl oder Variable.

Gui Premonsa
quelle
2

Jede ungerade Zahl, wenn sie durch zwei geteilt wird, hinterlässt den Rest als 1 und jede gerade Zahl, wenn sie durch Null geteilt wird, hinterlässt eine Null als Rest. Daher können wir diesen Code verwenden

  function checker(number)  {
   return number%2==0?even:odd;
   }
Augustus Francis
quelle
2

Wie wäre es damit...

    var num = 3 //instead get your value here
    var aa = ["Even", "Odd"];

    alert(aa[num % 2]);
AndroidManifester
quelle
2

Das habe ich getan

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

Aus irgendeinem Grund musste ich sicherstellen, dass die Länge des Arrays um eins kleiner ist. Wenn ich das nicht mache, bekomme ich im letzten Element des oddNumbers-Arrays "undefined".

Zakher Masri
quelle
2
Dies liegt daran, dass die Bedingung auf weniger als oder gleich "<=" der Länge des Arrays gesetzt ist. Ich habe das Gleichheitszeichen entfernt und das Ergebnis war wie gewünscht.
Zakher Masri
2

Wenn Sie testen müssen, ob eine Variable ungerade ist, sollten Sie zuerst testen, ob sie eine Ganzzahl ist . Beachten Sie außerdem, dass bei der Berechnung des Restbetrags für eine negative Zahl das Ergebnis negativ ist ( -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
}

Wenn Number.isInteger verfügbar ist, können Sie diesen Code auch vereinfachen, um:

function isOdd(value) {
  return Number.isInteger(value)      // value should be integer
    value % 2 !== 0;                  // value should not be even
}

Hinweis: Hier testen wir value % 2 !== 0statt value % 2 === 1wegen -3 % 2 === -1. Wenn du nicht willst-1 diesen Test , müssen Sie möglicherweise diese Zeile ändern.

Hier einige Testfälle:

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
tsh
quelle
2

Verwenden von % hilft Ihnen dabei ...

Sie können einige Funktionen erstellen, um dies für Sie zu tun ... Ich bevorzuge separate Funktionen, die nicht wie folgt an Number in Javascript angehängt sind und die auch prüfen, ob Sie eine Nummer übergeben oder nicht:

komische Funktion:

var isOdd = function(num) {
  return 'number'!==typeof num ? 'NaN' : !!(num % 2);
};

gleiche Funktion:

var isEven = function(num) {
  return isOdd(num)==='NaN' ? isOdd(num) : !isOdd(num);
};

und nenne es so:

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
Alireza
quelle
2

Ein Liner in ES6, nur weil es sauber ist.

const isEven = (num) => num % 2 == 0;

damdeez
quelle
2

Viele Menschen verstehen die Bedeutung von ungerade falsch

  • isOdd("str")sollte falsch sein.
    Nur eine ganze Zahl kann ungerade sein.
  • isOdd(1.223)und isOdd(-1.223)sollte falsch sein.
    Ein float ist keine ganze Zahl.
  • isOdd(0)sollte falsch sein.
    Null ist eine gerade Ganzzahl ( https://en.wikipedia.org/wiki/Parity_of_zero ).
  • isOdd(-1)sollte wahr sein.
    Es ist eine seltsame ganze Zahl.

Lösung

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 (falls erforderlich): https://jsfiddle.net/9dzdv593/8/

1-Liner

Javascript 1-Liner-Lösung. Für diejenigen, denen Lesbarkeit egal ist.

const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;
tfmontague
quelle
Sie können die Lösung noch beschleunigen. Das heißt, in den endgültigen Anweisungen können Sie einfach zurückgeben !! (n% 2). Dadurch funktioniert es optional mit vorzeichenbehafteten Zahlen (dh wenn n% 2 0 zurückgibt, ist dies falsch, aber wenn -1 oder 1 zurückgegeben werden, würde dies der Fall sein return true). Ihre Lösung gibt für ungerade Zahlen tatsächlich false zurück, da überprüft wird, ob die Modulrückgabe 0 ist, aber für 1 geprüft werden sollte, und 1 für negative Zahlen fehlschlagen würde, daher ist return !! (n% 2) sicherer. Außerdem verursacht {} (Blockanweisung) keine Minifizierungsprobleme und ist in der Diskussion nicht vorhanden.
Hydroper
@TheProHands - Danke für die Notizen. (1) Das Problem war, dass die Modulus-Version einen Tippfehler hatte; es hätte (n % 2) !== 0statt sein sollen (n % 2) === 0. (2) Mein Rat ist zu vermeiden !!(n % 2), weil (a) es eine langsamere Leistung hat als (n % 2) !== 0( jsperf.com/notnot-vs-strict-not ), (b) es ein Hack ist - es zwingt einen Falsey-Wert 0in falseund (c) Es ist dunkel (Programmiersprachen auf hoher Ebene sollten aus Gründen der Leistung nicht wie Pascal gelesen werden - das ist die Aufgabe des Compilers). (3) Ja, fehlende {}Blockanweisungen führen zu mehreren Problemen (wie in meiner Antwort aktualisiert).
Montag,
Ich vermeide Blockanweisungen nie, weil mir die Lesbarkeit wichtig ist, aber ich versuche zu sagen, dass das Suchen von Blockanweisungen nicht zu Problemen führt, sondern nur zur Codepflege. Das heißt, die Verwendung von Sequenzausdrücken, die mit der Ausdrucksanweisung anstelle der Blockanweisung zusammengeführt werden, kann den Code unlesbar und hässlich machen, dh : if (0) call1(), assign = 0, call2(), aber eine einzelne Anweisung ist nicht schlecht:if (0) return; if (0) ;; if (0); break; if (0) continue; Blockanweisung zusammengeführt werden , und ich bevorzuge es trotzdem, weiterhin Blockanweisungen mit Zeilenumbrüchen zu verwenden, wenn ich habe Long-Inline-Bedingungen.
Hydroper
Typ / null Kontrollen wie Ihre isNaN(n)dumm sind - sicher , dass Sie den abgedeckte NaNFall, aber isOdd(null), isOdd(undefined), isOdd({x:1})alle zurück , falsedie ich für einen Fehler sein; es sei denn, Sie geben nur an, dass Ihre Funktion in einer bestimmten Domäne korrekt funktioniert: nur Eingaben vom Typ Nummer. Lassen Sie in diesem Fall einfach den isNaNScheck fallen und zwingen Sie den Benutzer, ihn mit dem richtigen Typ aufzurufen. Defensive Programmierung ist schrecklich. Dann wird Ihre Funktion vereinfacht, um isOdd = x => Math.floor(x) === x && x & 1 === 1- explizite Rückgabe trueoder falseWerte sind nicht erforderlich
Danke
null, undefinedund Objekte {}sind keine ungeraden Ganzzahlen, und daher gibt die Funktion zurück false- nicht sicher, warum Sie dies als Fehler betrachten. Die isNaNPrüfung dient der Leistung (nicht der Verteidigung) und lässt die Funktion vorzeitig beendet werden, ohne die anderen Prüfungen durchzuführen.
Montag,
1

Ich würde dies implementieren, um einen Booleschen Wert zurückzugeben:

function isOdd (n) {
    return !!(n % 2);
    // or ((n % 2) !== 0).
}

Es funktioniert sowohl mit vorzeichenlosen als auch mit vorzeichenbehafteten Nummern. Wenn der Modul zurückkehrt -1oder 1übersetzt wird true.

Nichtmodul-Lösung:

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;
}
Hydroper
quelle
1

Ein funktionalerer Ansatz im modernen 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)
gunn
quelle
1

in ES6:

const isOdd = num => num % 2 == 1;

Darryl Mendonez
quelle
3
Wenn Sie einer acht Jahre alten Frage mit 26 vorhandenen Antworten eine Antwort hinzufügen, ist es wirklich hilfreich zu erklären, welchen neuen Aspekt der Frage Ihre Antwort anspricht und ob sich der Zeitablauf und neue Versionen auf die Antwort auswirken. Eine Nur-Code-Antwort kann fast immer durch Hinzufügen einer Erklärung und in diesem Fall einiger Beispielaufrufe zur Verwendung verbessert werden.
Jason Aller
1
Der Titel lautet "So stellen Sie fest, ob eine Zahl in JavaScript ungerade ist", und es wurde keine ES6-Lösung für die gestellten Fragen veröffentlicht.
Darryl Mendonez
0

Mit dem ternären Operator können Sie die ungeraden geraden Zahlen finden:

var num = 2;
result = (num % 2 == 0) ? 'even' : 'odd'
console.log(result);

Mahendra Kulkarni
quelle
0

Dies funktioniert für Arrays:

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

Dies sollte sich abmelden: 4,92 1,9,21,41

für nur eine Zahl:

function evenOrOdd(number) {
  if (number % 2 === 0) {
    return "even";
  }

  return "odd";
}

console.log(evenOrOdd(4));

Dies sollte sogar auf der Konsole ausgegeben werden

JuicY_Burrito
quelle