Comment convertir une chaîne de caractères (string) en Boolean, en JavaScript ?
Il est possible de créer un booléen à partir d'une variable en JavaScript. Voici comment procéder.
Dans le langage JavaScript, les variables récupérées dans les formulaires sont la plupart du temps des chaînes de caractères. Le langage ne convertit pas automatiquement les variables dans un autre type. Ainsi, si la valeur true est stockée par exemple dans un input, il est nécessaire de convertir la valeur pour la transformer en un booléen.
Il est possible de créer un booléen à partir d'une variable en la convertissant avec le mot-clé Boolean suivi de la variable entre parenthèses. On peut également le faire avec le caractère !. Il permet d'obtenir la valeur booléenne opposée à la variable. En utilisant le mot-clé deux fois de suite, on peut donc convertir en booléen une variable. Il ne faut cependant pas utiliser ces méthodes pour une chaîne de caractères car la conversion ne fonctionnera pas correctement.
var maChaine = false; var monBooleen = Boolean(maChaine); //La variable monBooleen contient true car une chaîne de caractères convertie avec cette méthode contient toujours la valeur true. var monBooleen = !!maChaine; //Pour la même raison, la variable monBooleen contient la valeur true.
Une solution simple consiste à effectuer une comparaison stricte, grâce à l'opérateur ===. Cette comparaison stricte évitera les conversions implicites de types. Cependant, la méthode ne fonctionnera pas avec d'autres valeurs, par exemple TRUE.
var maChaine = true; var monBooleen = (maChaine === true); //monBoolen vaut true
Une autre possibilité consiste à faire appel à la librairie JSON et la méthode parse(). En lui passant les chaînes true ou false en argument, on obtient un booléen. Il faut cependant être vigilant car d'autres chaînes de caractères provoquent une erreur de type parseError. Il faut donc soit gérer ces erreurs avec un bloc try...catch, soit s'assurer que seules ces deux valeurs peuvent être utilisées en argument.
var maChaine = true; var monBooleen = JSON.parse(maChaine); //monBoolen vaut true
On peut également créer une fonction qui peut gérer tous les cas particuliers selon la valeur passée en paramètre. Pour éviter les problèmes liés aux valeurs en majuscules, la méthode toLowerCase(), qui convertit une chaîne de caractères en minuscules, sera utilisée. On peut également appeler la fonction trim() pour gérer d'éventuelles espaces. Un switch...case permet de gérer tous les cas et d'avoir une valeur par défaut.
chaineEnBooleen: function(maChaine) { switch(maChaine.toLowerCase().trim()) { case true: case yes: case 1: return true; case false: case no: case 0: case null: return false; default: return Boolean(string); } }