Best Practice: 1 und 0 nach true und false konvertieren in Javascript

1 und 0 zu true und false in JavascriptHeute mal nur einen ganz kurzen Beitrag. Es gibt sicherlich viele Wege 0 und 1 in Javascript nach true und false umzuwandeln.

Folgender Weg, den ich heute gesehen hab, dürfte aber wohl der kürzeste und auch eleganteste sein. Zudem klappt er nicht nur für Integer-Werte, sondern auch für die String-Repräsentationen von 0 und 1.

Sowas verbuche ich hier immer unter “Programmierperlen”…

0 und 1 nach true und false

Um die Integer 0 und 1 nach Boolean zu konvertieren, genügt es den Not-Operator doppelt einzusetzen.

var thisIsFalse = !!0; //false
var thisIsTrue = !!1; //true

Warum das funktioniert? Nehmen wir folgendes Beispiel. 1 ist ein valider Wert und somit true. Wenn wir nun !1 schreiben, dann negieren wir das true und erhalten false. Mit einem zweiten ! also !!1 negieren wir das erhaltene false und bekommen somit true für 1. Für die 0 sieht es genau andersrum aus.  So entspricht 0 einem false. Dementsprechen !0 einem true und !!0 einem false.

“0”- und “1”-Strings  nach true und false

Und was, wenn 0 und 1 als Strings vorliegen, weil Sie zum Beispiel einem schlecht umgesetztem JSON-String entspringen? Nichts einfacher als das. Mittels des + Operators lassen sich Strings zu int casten. Dies Lösung für einen String sieht also wie folgt aus:

</span>
var thisIsFalse = !!+"0"; //false
var thisIsTrue = !!+"1"; //true

Drei Zeichen, um aus einem String (mit dem Wert “0” oder “1”) einen Boolean zu machen. Ich denke viel eleganter geht es nicht mehr. Aber man lernt ja nie aus. Kennt ihr eine noch bessere Lösung?

3 Kommentare

  1. Ein paar allgemeine Fragen von einem Java-Anfänger:
    Wie groß ist der zwischen Java und JavaScript? Und wo unterscheiden sich die Anwendungsgebiete?
    Lohnt sich auch JavaScript zu lernen?
    Danke im Voraus

  2. Klasse endlich was neues gelernt, werde ich mir gleich aneignen.
    geht übrigens auch bei PHP:

    echo !!”1″; //true
    echo !!”0″; //false
    echo !!1; //true
    echo !!0; //false

    vg
    Stefan

    • Hallo Stefan,

      danke für deinen Kommentar. Hattest du zufälligerweise auch ausprobiert, ob der Cast von String zu Int mittels + in PHP auch funktioniert?

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.