2011-04-14 10 views
11

Obtuve el Json "false" del servidor. Respondo como bool pero es Json, por lo que está en el tipo de navegador es String en lugar de bool.¿Cómo comparo string y boolean en Javascript?

Así que si ejecuto (!data) cada vez que quiero comprobar "false" == false, entonces no funcionó.

Entonces, ¿cómo puedo analizar bool desde String en JavaScript, entonces?

"true" == true y "false" == false. A continuación, el código (!data) puede comprobar lo que es [true y false]

Respuesta

12

Simplemente comprobaría explícitamente la cadena "true".

let data = value === "true"; 

lo contrario, podría utilizar JSON.parse() para convertirlo en un valor nativa de JavaScript, pero es un montón de gastos si se sabe que es sólo las cuerdas "true" o "false" que recibirá.

+1

JSON.parse() decodificará el servidor bo Olean a javascript booleano, para que pueda llamar (! myJSONObject.myBool) es más recomendado que el eval. json.org –

+1

Esto es realmente excesivo. Es al menos tan eficiente simplemente probar el valor de la cadena contra "verdadero". Además de ser perfectamente suficiente para sus necesidades, también es universalmente portátil. –

+0

@chomp Responde a la pregunta * ¿Cómo puedo analizar el bool de la cadena en JavaScript? * Sin embargo, simplemente verificaría la cadena ''false' '. – alex

0
String.prototype.revalue= function(){ 
    if(/^(true|false|null|undefined|NaN)$/i.test(this)) return eval(this); 
    if(parseFloat(this)+''== this) return parseFloat(this); 
    return this; 
} 

Desde: http://www.webdeveloper.com/forum/showthread.php?t=147389

En realidad, sólo tendrá los primeros "if" de la función - pruebas para encontrar la verdadera o falsa en el código y los eval s, convirtiéndola en el valor booleano

+3

Adición de funciones a una clase base (tal como String) tiende a plantear problemas de mantenimiento y claridad –

+3

Mientras inteligente -.. y tal vez soy simplemente un seguidor de la seguridad del tipo: nunca en un millón de años alentaría a nadie a usar este código para ningún propósito práctico. –

3

Trate de datos de expresión == "verdadero"

pruebas:

datos = "false" - valor será falsa

fecha = "true" - valor será verdadero

Además, arreglar su JSON. JSON puede manejar booleanos sin problemas.

+1

+1 para "corregir su JSON" –

2

Si es sólo un JSON "false"/"verdadero", se puede utilizar,

if(! eval(data)){ 
    // Case when false 
} 

Sería más limpia, si se restringe el código para aceptar sólo datos JSON desde un servidor, y siempre jsonParse o evalúelo al objeto JS (algo así como lo hace jquery getJSON. Acepta solo respuestas JSON y lo analiza en el objeto antes de pasar a la función de devolución de llamada).

De esta forma, no solo obtendrá booleano como booleano del servidor, sino que también conservará todos los demás tipos de datos, y luego podrá usar declaraciones de expresiones de rutina en lugar de expresiones especiales.

Happy Coding.

1

Creo que necesita ver cómo se generan los datos JSON. Definitivamente puede tener un booleano JS normal falso en JSON.

{ "valor1": false, "valor2": true}

8

"Si uno de los operandos es Boolean, el operando booleano se convierte a 1 si es verdad y 0 si es falso."(from MDN Comparison Operators page)

Ejemplos:

true == "true"; //false 
true == "1"; //true 
false == "false"; //false 
false == ""; //true 
false == "0"; //true 
3
var data = true; 
data === "true" //false 
String(data) === "true" //true 

Esto funciona bien