Außerdem :
true ? 1 : 0
Gibt es einen kurzen Trick, der "übersetzen" True->1und False->0in Javascript?
Ich habe gesucht, aber keine Alternative gefunden
Was meinst du mit "kurzer Trick"?
Antwort: Gleich wie ~~6.6ein Trick fürMath.floor
Außerdem :
true ? 1 : 0
Gibt es einen kurzen Trick, der "übersetzen" True->1und False->0in Javascript?
Ich habe gesucht, aber keine Alternative gefunden
Was meinst du mit "kurzer Trick"?
Antwort: Gleich wie ~~6.6ein Trick fürMath.floor
Antworten:
Viele Möglichkeiten, dies zu tun
// implicit cast
+true; // 1
+false; // 0
// bit shift by zero
true >>> 0; // 1, right zerofill
false >>> 0; // 0
true << 0; // 1, left
false << 0; // 0
// double bitwise NOT
~~true; // 1
~~false; // 0
// bitwise OR ZERO
true | 0; // 1
false | 0; // 0
// bitwise AND ONE
true & 1; // 1
false & 1; // 0
// bitwise XOR ZERO, you can negate with XOR ONE
true ^ 0; // 1
false ^ 0; // 0
// even PLUS ZERO
true + 0; // 1
false + 0; // 0
// and MULTIPLICATION by ONE
true * 1; // 1
false * 1; // 0
Sie können auch die Division durch verwenden 1, true / 1; // 1aber ich würde empfehlen, die Division nach Möglichkeit zu vermeiden.
Darüber hinaus haben viele nicht unäre Operatoren eine Zuweisungsversion. Wenn Sie also eine Variable haben, die Sie konvertieren möchten, können Sie dies sehr schnell tun.
Sie können einen Vergleich der verschiedenen Methoden mit diesem jsperf sehen .
>>>ist der bitweise Nullverschiebungs-Rechtsverschiebungsoperator . x >>> ybedeutet "Bewegen Sie jedes Bit xnach rechts y, indem Sie die jetzt leeren Spalten mit 0" füllen . Zu wählen y = 0bedeutet, dass Sie die Bits nirgendwo hin bewegen, aber trotzdem die Besetzung übernehmen.
... oder Sie können +trueund verwenden+false
Ein anderer Weg könnte sein Number()
Number(true) // = 1
Number(false) // = 0
Sie können verwenden ~~boolean, wo boolean(offensichtlich) ein Boolescher Wert ist.
~~true // 1
~~false // 0
true + true + true == 3