919 votos

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

Puedo convertir una cadena de caracteres que representa un valor booleano (p. ej., 'true', 'false') en un tipo intrínseco en JavaScript?

Tengo un formulario oculto en código HTML que se actualiza sobre la base de un usuario de la selección dentro de una lista. Este formulario contiene algunos campos que representan los valores booleanos y de forma dinámica rellena con un intrínseco valor booleano. Sin embargo, una vez que este valor se coloca en la ocultos campo de entrada se convierte en una cadena.

La única forma en que podía encontrar para determinar el campo valor booleano, una vez que se convierte en una cadena, fue a depender el valor literal de su representación de cadena.

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

¿Hay una mejor manera de lograr esto?

1184voto

guinaps Puntos 4055

Probablemente, usted debe ser cauteloso acerca del uso de estos dos métodos para sus necesidades específicas:

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

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

Cualquier cadena que no es la cadena vacía se evalúan true mediante el uso de ellos. A pesar de que es el más limpio de los métodos que yo pueda pensar sobre la conversión a boolean, creo que no son lo que usted está buscando.

Acerca de la forma en que usted sugiere, se podría hacer más estrictas con la identidad del operador (===), que no hacen las conversiones de tipo implícito cuando la comparación de las variables de tipos distintos, en lugar del operador de igualdad (==), lo que hace:

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

251voto

Luke Puntos 517

¿Cómo?

JSON.parse("true");

o con jQuery

$.parseJSON("true");

84voto

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

Para aquellos (ver los comentarios) que le gustaría ampliar el objeto String para conseguir esto, pero está preocupado acerca de la enumerability y están preocupados por el enfrentamiento con otro código que se extiende el objeto String:

Object.defineProperty(String.prototype, "com_example_bool", {
    get : function() {
        return (/^(true|1)$/i).test(this);
    }
});
alert("true".com_example_bool);

(No funciona en los navegadores más antiguos de curso y Firefox muestra la falsa mientras Opera, Chrome, Safari y IE muestran el verdadero. Error 720760)

76voto

Jared Farrish Puntos 26391

Recuerde partido de caso:

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

También, si es un elemento de formulario de casilla de verificación, también se puede detectar si la casilla de verificación está activada:

var isTrueSet = document.myForm.IS_TRUE.checked;

Suponiendo que si se comprueba, es "conjunto" de igual a true. Esta se evalúa como true/false.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X