¿Cómo puedo convertir una cadena a booleana en JavaScript?

Resuelto Kevin asked hace 16 años • 106 respuestas

¿Puedo convertir una cadena que representa un valor booleano (por ejemplo, 'verdadero', 'falso') en un tipo intrínseco en JavaScript?

Tengo un formulario oculto en HTML que se actualiza según la selección de un usuario dentro de una lista. Este formulario contiene algunos campos que representan valores booleanos y se completan dinámicamente con un valor booleano intrínseco. Sin embargo, una vez que este valor se coloca en el campo de entrada oculto, se convierte en una cadena.

La única manera que pude encontrar para determinar el valor booleano del campo, una vez convertido en una cadena, fue depender del valor literal de su representación de cadena.

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';

¿Existe una mejor manera de lograr esto?

Kevin avatar Nov 05 '08 07:11 Kevin
Aceptado

Hacer:

var isTrueSet = (myValue === 'true');

usando el operador de identidad ( ===), que no realiza ninguna conversión de tipo implícita cuando las variables comparadas tienen tipos diferentes.

Esto se establecerá isTrueSeten un valor booleano truesi la cadena es "verdadera" y booleano falsesi es una cadena "falsa" o no está configurada en absoluto.

Para que no distinga entre mayúsculas y minúsculas, intente:

var isTrueSet = /^true$/i.test(myValue);
// or
var isTrueSet = (myValue?.toLowerCase?.() === 'true');
// or
var isTrueSet = (String(myValue).toLowerCase() === 'true');

No:

Probablemente debería tener cuidado al utilizar estos dos métodos para sus necesidades específicas:

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true

Cualquier cadena que no sea la cadena vacía se evaluará trueusándolas. Aunque son los métodos más limpios que se me ocurren con respecto a la conversión booleana, creo que no son lo que estás buscando.

guinaps avatar Nov 05 '2008 00:11 guinaps

Advertencia

Esta respuesta heredada altamente votada es técnicamente correcta, pero solo cubre un escenario muy específico, cuando el valor de su cadena es EXACTAMENTE "true"o "false".

Una cadena json no válida pasada a estas funciones a continuación generará una excepción .


Respuesta original:

¿Qué tal si?

JSON.parse("True".toLowerCase());

o con jQuery

$.parseJSON("TRUE".toLowerCase());
Luke avatar Oct 20 '2011 09:10 Luke
const stringToBoolean = (stringValue) => {
    switch(stringValue?.toLowerCase()?.trim()){
        case "true": 
        case "yes": 
        case "1": 
          return true;

        case "false": 
        case "no": 
        case "0": 
        case null: 
        case undefined:
          return false;

        default: 
          return JSON.parse(stringValue);
    }
}
Chris Woolum avatar Sep 12 '2009 03:09 Chris Woolum

Creo que esto es mucho más universal:

if (String(a).toLowerCase() == "true")...

Va:

String(true) == "true"     //returns true
String(false) == "true"    //returns false
String("true") == "true"   //returns true
String("false") == "true"  //returns false
 avatar Nov 27 '2008 11:11

Recuerde hacer coincidir mayúsculas y minúsculas:

var isTrueSet = (myValue.toLowerCase() === 'true');

Además, si se trata de una casilla de verificación de un elemento de formulario, también puedes detectar si la casilla de verificación está marcada:

var isTrueSet = document.myForm.IS_TRUE.checked;

Suponiendo que si está marcado, se "establece" en verdadero. Esto se evalúa como verdadero/falso.

 avatar Nov 05 '2008 01:11