Ich habe ein Modell, das mit einer JSON-Antwort aus einer MySQL-Datenbank festgelegt ist. Die Modelldaten werden mit true oder false in ein boolesches / tinyint-Feld in der Datenbank gesetzt, das 1
oder verwendet 0
.
Meiner Ansicht nach habe ich eine Bindung, die nach einem Booleschen Wert mit Unterstrichen sucht _.isBoolean
. Wenn mein Modell die Daten empfängt, werden sie natürlich mit 1
oder 0
anstelle von wahr oder falsch gesetzt und die _.isBoolean
Prüfung schlägt fehl.
Gibt es eine Möglichkeit, meine JSON-Antwort von mysql korrekt als booleschen Wert true oder false anstelle von 1
oder 0
vorzugsweise als Möglichkeit zu verwenden, mein Modell beim Abrufen (und vor dem Rendern der Ansicht) selbst zu aktualisieren, um es zu konvertieren true
oder darauf zu false
basieren? Es ist 1 oder 0 Eigenschaft?
zB sehen die Daten meines Modells so aus, wie {"isChecked":"1"}
ich es brauche{"isChecked":true}
Vielen Dank für Ihre Vorschläge!
quelle
Antworten:
Alles was Sie brauchen ist konvertieren
string
inint
mit+
und konvertieren Sie das Ergebnis in boolesche mit!!
:Sie können diese Manipulation in der folgenden
parse
Methode ausführen:UPDATE : 7 Jahre später finde ich die
Number(string)
Konvertierung eleganter. Auch das Mutieren eines Objekts ist nicht die beste Idee. Davon abgesehen:quelle
int
zuerst.!!+"1"; // true
,!!+"0"; // false
,!!+1; // true
,!!+0; // false
Verwenden Sie ein doppeltes nicht:
quelle
value = (!!parseInt(value) ? true : false)
!!2
oder irgendeine andere Nummer= false
, richtig?Hier ist eine weitere Option, die länger ist, aber möglicherweise besser lesbar ist:
quelle
Zuweisen eines Vergleichs zum Eigenschaftswert
JavaScript
Sie können den Vergleich der Eigenschaft zuweisen
"1"
Dies wird nur für einen String-Wert von
"1"
obwohl ausgewertet . Andere Variablen, die wie eine tatsächlichetypeof number
zu falsch ausgewertet werden, wären falsch. (dhobj["isChecked"]=1
)Wenn Sie wahllos über
"1"
oder sein möchten1
, können Sie Folgendes verwenden:Beispielausgaben
PHP
Gleiches Konzept in PHP
Es gelten die gleichen Operatorbeschränkungen wie oben für JavaScript angegeben.
Verdoppeln Sie nicht
Das "Double Not" funktioniert auch. Es ist verwirrend, wenn Leute es zum ersten Mal lesen, aber es funktioniert in beiden Sprachen für Ganzzahl- / Zahlentypwerte. In JavaScript funktioniert dies jedoch nicht für Zeichenfolgentypwerte, da diese immer als wahr ausgewertet werden:
JavaScript
PHP
quelle