J'ai un modèle qui est défini avec une réponse JSON d'une base de données mysql. Les données du modèle sont définies avec true ou false dans un champ booléen / tinyint de la base de données, qui utilise 1
ou 0
.
À mon avis, j'ai une liaison qui vérifie un booléen avec un trait de soulignement _.isBoolean
. Bien sûr, lorsque mon modèle reçoit les données, il est défini avec 1
ou 0
au lieu de true ou false et la _.isBoolean
vérification échoue.
Existe-t-il de toute façon soit correctement ma réponse JSON de mysql soit une valeur booléenne true ou false au lieu de 1
ou 0
, ou de préférence, existe-t-il un moyen de mettre à jour mon modèle lui-même lors de la récupération (et avant le rendu de la vue) pour le cast true
ou false
basé sur c'est 1 ou 0 propriété?
Par exemple, les données de mon modèle ressemblent à celles dont {"isChecked":"1"}
j'ai besoin{"isChecked":true}
Merci beaucoup pour toutes les suggestions que vous pourriez avoir!
la source
Réponses:
Tout ce que vous avez besoin est converti
string
àint
avec+
et convertir le résultat en booléens avec!!
:Vous pouvez faire cette manipulation dans la
parse
méthode:MISE À JOUR : 7 ans plus tard, je trouve la
Number(string)
conversion plus élégante. La mutation d'un objet n'est pas non plus la meilleure idée. Cela étant dit:la source
int
premier.!!+"1"; // true
,!!+"0"; // false
,!!+1; // true
,!!+0; // false
Utilisez un double non:
la source
value = (!!parseInt(value) ? true : false)
!!2
ou tout autre numéro= false
, non?Voici une autre option plus longue mais peut-être plus lisible:
la source
Attribution d'une comparaison à la valeur de propriété
JavaScript
Vous pouvez attribuer la comparaison de la propriété à
"1"
Cela évalue uniquement pour une valeur String de
"1"
cependant. D'autres variables évaluent à faux comme un réeltypeof number
serait faux. (ieobj["isChecked"]=1
)Si vous voulez être indiscret sur
"1"
ou1
, vous pouvez utiliser:Exemples de sorties
PHP
Même concept en PHP
Les mêmes limitations d'opérateur que celles indiquées ci-dessus pour JavaScript s'appliquent.
Double pas
Le «double pas» fonctionne également. C'est déroutant lorsque les gens le lisent pour la première fois, mais cela fonctionne dans les deux langues pour les valeurs de type entier / nombre. Cependant, cela ne fonctionne pas en JavaScript pour les valeurs de type chaîne, car elles évaluent toujours à true:
JavaScript
PHP
la source