Eu tenho um modelo que é definido com uma resposta JSON de um banco de dados mysql. Os dados do modelo são configurados com true ou false em um campo booleano / tinyint no banco de dados, que usa 1
ou 0
.
Na minha opinião, tenho uma ligação que verifica se há um booleano com sublinhados _.isBoolean
. Claro, quando meu modelo recebe os dados, ele é definido com 1
ou em 0
vez de verdadeiro ou falso e a _.isBoolean
verificação falha.
Existe alguma maneira de fazer com que minha resposta JSON do mysql seja um valor booleano verdadeiro ou falso em vez de 1
ou 0
, ou preferencialmente, há uma maneira de fazer meu modelo se atualizar na busca (e antes que a visualização seja renderizada) para lançar true
ou com false
base em é 1 ou 0 propriedade?
por exemplo, os dados do meu modelo parecem {"isChecked":"1"}
quando eu preciso que sejam{"isChecked":true}
Muito obrigado por qualquer sugestão que possa ter!
fonte
Respostas:
Tudo que você precisa é converter
string
paraint
com+
e converter o resultado em booleano com!!
:Você pode fazer essa manipulação no
parse
método:ATUALIZAÇÃO : 7 anos depois, acho a
Number(string)
conversão mais elegante. Além disso, transformar um objeto não é a melhor ideia. Dito isto:fonte
int
primeiro.!!+"1"; // true
,!!+"0"; // false
,!!+1; // true
,!!+0; // false
Use um duplo não:
fonte
value = (!!parseInt(value) ? true : false)
!!2
ou qualquer outro número= false
, certo?Aqui está outra opção mais longa, mas pode ser mais legível:
fonte
Atribuição de comparação ao valor da propriedade
JavaScript
Você pode atribuir a comparação da propriedade para
"1"
Isso só avalia um valor de String de
"1"
embora. Outras variáveis são avaliadas como falsas, como se um realtypeof number
fosse falso. (ieobj["isChecked"]=1
)Se você quiser ser indiscriminado sobre
"1"
ou1
, pode usar:Saídas de exemplo
PHP
Mesmo conceito em PHP
As mesmas limitações do operador declaradas acima para JavaScript se aplicam.
Double Not
O 'não duplo' também funciona. É confuso quando as pessoas o leem pela primeira vez, mas funciona em ambas as línguas para valores de tipo inteiro / número. No entanto, não funciona em JavaScript para valores de tipo de string, pois eles sempre são avaliados como verdadeiros:
JavaScript
PHP
fonte