2010-12-03 20 views
24

¿Cómo convertir una cadena a booleana?Convierte cadena a booleana en javascript

Intenté usar el constructor Boolean("false"), pero siempre es cierto.

+2

echar un vistazo a esto, pregunta anterior similar con respuestas [otra pregunta desbordamiento de pila] (http://stackoverflow.com/questions/263965/how-can-i-convert-a- string-to-boolean-in-javascript) – Steve

Respuesta

73

Utilizaría una comparación de cadenas simples aquí, hasta donde yo sé, no hay una función incorporada para lo que quiere hacer (a menos que desee recurrir a eval ... que no).

var myBool = myString == "true"; 
+6

Leyendo esto en 2014, y aún sorprendido por la simplicidad de esta solución. – sargas

+1

quizás var myBool = myString.toLowerCase() == "true" será mejor – Stupidfrog

+1

¡ESTO NO FUNCIONA! Simplemente inicialice myString = true; ¡y verás que myBool devuelve falso! –

1

Depende de lo que veas como falso en una cadena.

Cadena vacía, la palabra falsa, 0, en caso de que todos sean falsos o solo sean vacios falsos o solo la palabra falsa.

Probablemente necesite construir su propio método para probar la cadena y devolver verdadero o falso para estar 100% seguro de que hace lo que necesita.

-5

Ver esta pregunta para referencia:

How can I convert a string to boolean in JavaScript?

Hay algunas maneras:

// Watch case sensitivity! 
var boolVal = (string == "true"); 

o

var boolVal = Boolean("false"); 

o

String.prototype.bool = function() { 
    return (/^true$/i).test(this); 
}; 
alert("true".bool()); 
+12

'Boolean (" false ")' es realmente 'verdadero' – torvin

-2
javascript:var string="false";alert(Boolean(string)?'FAIL':'WIN') 

no funcionará porque cualquier cadena no vacía es true

javascript:var string="false";alert(string!=false.toString()?'FAIL':'WIN') 

obras porque en comparación con represenation cadena

-5

Puede probar esto:

var myBoolean = Boolean.parse(boolString);

+1

TypeError: función de objeto Boolean() {[código nativo]} no tiene el método 'analizar' –

+0

No parece que' Boolean.parse() 'sea ampliamente disponible, pero definitivamente está en las versiones actuales de Chrome (estoy usando v21) y funciona como se esperaba. – mbeasley

3

en realidad no obtiene el significado del método booleano. Siempre devuelve verdadero si la variable no es nula o está vacía.

var variable = some value; Boolean(variable);

Si mi variables tienen algún valor entonces será return true demás return false No se puede utilizar de Boole como usted piensa.

+0

Booleano (variable); ¿El truco para mí :) – Anuj

0

Estas líneas dan el siguiente resultado:

Boolean(1).toString(); // true 
Boolean(0).toString(); // false 
11

me gustaría responder a esta para mejorar la respuesta aceptada.

Para mejorar el rendimiento, y en casos reales donde las entradas de formularios pueden estar pasando valores como 'verdadero' o 'falso', este método producirá los mejores resultados.

function stringToBool(val) { 
    return (val + '').toLowerCase() === 'true'; 
} 

JSPerf

enter image description here

+0

¿por qué el voto a favor? – iamwhitebox

3

Todavía me sorprende cómo la gente vota a ciegas de soluciones que no funcionan, como:

var myBool = myString == "true"; 

Lo anterior es por lo BUGGY! !!

¿No está convencido? Solo prueba myString = true (me refiero a la verdad booleana). ¿Cuál es la evaluación ahora? Opps: ¡falso!

Alternativa

var myString=X; // X={true|false|"true"|"false"|"whatever"} 
myString=String(myString)=='true'; 
console.log(myString); // plug any value into X and check me! 

siempre evaluar la derecha!

+3

Hacer myString = true es diferente de lo que OP pidió, solicitó una conversión de cadena a booleana ... –

+0

¡No importa! Un buen programador siempre proporcionará un código que cubra tanto como sea posible y al mismo tiempo, mantenga el código lo más simple posible. No me diga "su comentario está fuera del tema" porque al final del día, lo que el lector quiere es lo mejor de lo mejor. Esto no es un concurso de belleza ni un concurso correcto contra incorrecto. Este es un foro donde los programadores comparten la mejor solución para que todos ganen. De lo contrario, todo esto es inútil/inútil. –

+0

Increíble cómo descuidó muchos peligros potenciales en su solución. X podría ser 5 o "5" o como usted mismo sugirió "lo que sea". Todos estos evaluarán a falso, lo que claramente no es correcto. Usted, como buen programador que siempre trata de superar con creces lo solicitado, debería saberlo mejor que publicar este código erróneo en este foro. – Xatian

3

cadena de truco a conversión booleana en javascript. p.ej.

var bool= "true"; 
console.log(bool==true) //false 

var bool_con = JSON.parse(bool); 

console.log(bool_con==true) //true 
7

también puede utilizar la función JSON.parse()

JSON.parse ("verdadero") devuelve verdadero (booleano)

JSON.parse ("falso") return false (booleano)

+0

Si alguien implementa esto como una solución, tenga en cuenta que si hace referencia a una propiedad de 'undefined' será causa de un' SyntaxError: token inesperado u en JSON en la posición 0'. Asegúrese de verificar que el valor se pueda analizar primero. – KLVTZ

1

Creo que el siguiente código hará el trabajo.

function isBoolean(foo) { 
    if((foo + "") == 'true' || (foo + "") == 'false') { 
     foo = (foo + "") == 'true'; 
    } else { 
     console.log("The variable does not have a boolean value."); 
     return; 
    } 
    return foo; 
} 

Al explicar el código:

foo + "" 

convierte el 'foo' variable a una cadena así que si ya es booleano la función no devolverá un resultado válido.

(foo + "") == 'true' 

Esta comparación volverá cierto sólo si 'foo' es igual a 'verdadero' o verdadero (de cadena o booleano). Tenga en cuenta que distingue entre mayúsculas y minúsculas, por lo que 'Verdadero' o cualquier otra variación dará como resultado falso.

(foo + "") == 'true' || (foo + "") == 'false' 

Del mismo modo, la frase anterior se traducirá en cierto sólo si el 'foo' variable es igual a 'verdadero', es cierto, 'falso' o falsa. Entonces cualquier otro valor como 'prueba' devolverá falso y luego no ejecutará el código dentro de la declaración 'si'. Esto asegura que solo se tendrán en cuenta los valores booleanos (cadena o no).

En la 3ra línea, el valor de 'foo' finalmente se "convierte" a booleano.

-2

Desafortunadamente, no encontré la función algo así como Boolean.ParseBool ('true') que devuelve verdadero como booleano tipo como en C#. Así solución es

var setActive = 'true'; 
setActive = setActive == "true"; 

if(setActive) 
// statements 
else 
// statements. 
Cuestiones relacionadas