3514 Stimmen

Wie kann ich in JavaScript eine Zeichenkette in einen Booleschen Wert umwandeln?

Kann ich eine Zeichenkette, die einen booleschen Wert repräsentiert (z. B. 'true', 'false'), in einen intrinsischen Typ in JavaScript umwandeln?

Ich habe ein verstecktes Formular in HTML, das auf der Grundlage der Auswahl eines Benutzers in einer Liste aktualisiert wird. Dieses Formular enthält einige Felder, die boolesche Werte darstellen und dynamisch mit einem eigenen booleschen Wert befüllt werden. Sobald dieser Wert jedoch in das verborgene Eingabefeld eingegeben wird, wird er zu einem String.

Die einzige Möglichkeit, den booleschen Wert des Feldes nach der Konvertierung in eine Zeichenkette zu bestimmen, bestand darin, sich auf den literalen Wert der Zeichenkettendarstellung zu verlassen.

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';

Gibt es eine bessere Möglichkeit, dies zu erreichen?

0 Stimmen

Nur um ein seltsames Beispiel für die Vermeidung eines Dreifach-Gleichheits-Vergleichs hervorzuheben: Ich habe eine Funktion currentSortDirection() die zurückgibt 1 für eine aufsteigende Sortierung, 0 für eine absteigende Sortierung, und -1 für nicht gesetzt. Verwendung von while (currentSortDirection() != desiredSortDirection) { sortColumn() } funktioniert hervorragend, da -1 != true y -1 != false ...aber dies zu ändern in while (Boolean(currentSortDirection) !== ...) {...} Kräfte -1 in eine true was ein paar zusätzliche Zeilen an Vorbereitung erfordert, nur um jshint glücklich zu machen.

0 Stimmen

Mögliches Duplikat von stackoverflow.com/questions/263965

0 Stimmen

@Droogans: Was passiert, wenn desiredSortDirection wird eingestellt auf asc ? Ich weiß, dass Sie in einer kontrollierten Umgebung wahrscheinlich die Kontrolle über den Wert haben. desiredSortDirection auf aber in einer gemeinsamen Umgebung gesetzt wird, wenn die Eingabe von desiredSortDirection kann von überall und in jeder Form kommen, Typüberprüfung gegen benutzerdefinierte Objekte und defensive Programmierung kann viele Stunden der Fehlersuche sparen. Ihr Code ist absolut in Ordnung und es ist nichts daran auszusetzen. Ich weise lediglich darauf hin, dass es keine allgemeingültige Antwort/Lösung gibt und es immer vom Szenario abhängt.

-1voto

M. Sherbeeny Punkte 111

Ich brauchte einen Code, der jeden Variablentyp in Boolesche Werte umwandelt. Hier ist, was ich mir ausgedacht habe:

const toBoolean = (x) => {
    if (typeof x === 'object') {
      for (var i in x) return true
      return false
    }
    return (x !== null) && (x !== undefined) && !['false', '', '0', 'no', 'off'].includes(x.toString().toLowerCase())
  }

Testen wir es!

const toBoolean = (x) => {
    if (typeof x === 'object') {
      for (var i in x) return true
      return false
    }
    return (x !== null) && (x !== undefined) && !['false', '', '0', 'no', 'off'].includes(x.toString().toLowerCase())
  }

  // Let's test it!
  let falseValues = [false, 'False', 0, '', 'off', 'no', [], {}, null, undefined]
  let trueValues = [  true, 'true', 'True', 1, -1, 'Any thing', ['filled array'], {'object with any key': null}]

  falseValues.forEach((value, index) => console.log(`False value ${index} of type ${typeof value}: ${value} -> ${toBoolean(value)}`))
  trueValues.forEach((value, index) => console.log(`True value ${index} of type ${typeof value}: ${value} -> ${toBoolean(value)}`))

Sie können Wörter wie "aus" und "nein" aus dem Feld entfernen, wenn sie nicht zu Ihrem Fall passen.

-3voto

Abderrahmen Punkte 347

Der einfachste Weg, eine Zeichenkette in einen Booleschen Wert umzuwandeln, ist der folgende:

Boolean(<stringVariable>)

0 Stimmen

Boolean("false") === true // Ausgabe true

-5voto

null Punkte 2469

Funktioniert perfekt und sehr einfach:

var boolean = "false";
boolean = (boolean === "true");

//boolean = JSON.parse(boolean); //or this way.. 

um es zu testen:

var boolean = "false";
boolean = (boolean === "true");

//boolean = JSON.parse(boolean); //or this way.. 

if(boolean == true){
    alert("boolean = "+boolean);
}else{
    alert("boolean = "+boolean);
}

0 Stimmen

Mein Fehler, ich habe das obige Snippet korrigiert - es funktioniert jetzt. Ich bin mir nicht sicher, wie die Anführungszeichen "" dort hineingekommen sind ;/ @HugoZapata

0 Stimmen

Aber die Frage ist, wie man einen String in einen Booleschen Wert umwandelt. new Boolean("false") funktioniert nicht, also ist Ihre Antwort nicht korrekt.

0 Stimmen

@HugoZapata hat die Antwort aktualisiert, ja war falsch (aber seltsamerweise hat es vorher funktioniert), die aktualisierte Antwort funktioniert jetzt richtig.

-6voto

Force Bolt Punkte 863

// Versuchen Sie dies auf zwei Arten: Konvertieren Sie eine Zeichenkette in einen Booleschen Wert

    const checkBoolean = Boolean("false"); 
    const checkBoolean1 = !!"false";  

    console.log({checkBoolean, checkBoolean1});

0 Stimmen

Ist nicht Boolean("false") gibt zurück. true

-7voto

Kev Punkte 561

Possible ways to convert String to Boolean Ich empfehle Ihnen, eine Funktion wie die dritte Option im Bild zu erstellen und sie in einer Hilfsklasse als Export zu platzieren und diese Funktion bei Bedarf wieder zu verwenden.

4 Stimmen

Abgelehnt, weil Sie ein Bild des Codes und nicht den Code selbst gepostet haben.

4 Stimmen

@Wyck Sie haben vergessen zu erwähnen, dass die Präsentation schön ist.

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