440 Stimmen

Boolesches Ergebnis in Zahl/Ganzzahl umwandeln

Ich habe eine Variable, die Folgendes speichert false o true aber ich brauche 0 o 1 stattdessen. Wie kann ich das tun?

9 Stimmen

Hier ist ein Leistungsvergleich einiger der angebotenen Techniken: jsperf.com/umwandlung-von-boolean-zu-zahl .

6 Stimmen

Node.JS werden die Nutzer verwenden wollen bool === true ? 1 : 0 da er bei weitem der schnellste V8 ist.

6 Stimmen

Oder einfach bool ? 1 : 0;

12voto

REMqb Punkte 361

Sie können auch 0 addieren, Verschiebeoperatoren oder xor verwenden:

val + 0;
val ^ 0;
val >> 0;
val >>> 0;
val << 0;

Diese haben ähnliche Geschwindigkeiten wie die der anderen Antworten.

10voto

Jose Velasco Punkte 153

In meinem Kontext, React Native, wo ich bin immer Opazität Wert von Boolean, der einfachste Weg: Verwenden Sie den unären Operator +.

+ true; // 1
+ false; // 0

Dies wandelt den booleschen Wert in eine Zahl um;

style={ opacity: +!isFirstStep() }

7voto

silkfire Punkte 22713

+!! können Sie dies auf eine Variable anwenden, auch wenn sie undefined :

+!!undefined    // 0
+!!false        // 0
+!!true         // 1

+!!(<boolean expression>)  // 1 if it evaluates to true, 0 otherwise

4voto

DroidOS Punkte 7822

Sie können dies tun, indem Sie einfach den booleschen Prototyp erweitern

Boolean.prototype.intval = function(){return ~~this}

Es ist nicht ganz einfach zu verstehen, was dort vor sich geht, daher wäre eine alternative Version wie folgt

Boolean.prototype.intval = function(){return (this == true)?1:0}

Wenn Sie das getan haben, können Sie Dinge tun wie

document.write(true.intval());

Wenn ich Boolesche Werte zum Speichern von Bedingungen verwende, konvertiere ich sie oft in Bitfelder. In diesem Fall verwende ich eine erweiterte Version der Prototyp-Funktion

Boolean.prototype.intval = function(places)
{
 places = ('undefined' == typeof(places))?0:places; 
 return (~~this) << places
}

mit denen Sie Folgendes tun können

document.write(true.intval(2))

die als Ausgabe 4 erzeugt.

4voto

Esger Punkte 1099
let integerVariable = booleanVariable * 1;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X