JavaScript 将字符串转换为布尔值
有时我们需要将包含 “true” 或 “false” 的字符串转换为布尔值(或bool)在JavaScript中,我们可以通过多种方法将字符串转换为布尔值。
介绍
布尔值 (true和false) 有时以字符串的形式存储在编程中 (“true”和”false”) 。这通常发生在读取文件或获取用户提供的字符串输入时。如果我们想对这些值应用布尔运算,这些字符串必须被转换为布尔值。在JavaScript中,有一些内置函数可以帮助我们将文本转换为布尔值。本文将介绍这些策略。
在JavaScript中进行字符串到布尔值的转换
以下是在JavaScript中将字符串转换为布尔值的方法。
1. 使用test()方法
JavaScript的 test() 函数使用正则表达式来匹配提供的字符串。如果找到匹配项,该方法返回 true ;否则,返回 false 。 RegExp 对象有一个名为 test() 的函数。
使用 test() 方法,我们可以简单地将包含true的正则表达式对象与提供的字符串进行匹配,从而将字符串转换为布尔值。如果提供的字符串包含单词 “true” ,则test()方法将返回true。在其他情况下,该方法将返回false。
示例:
var str1 = "true";
var str2 = "false";
var regexPattern = new RegExp("true");
var boolValue1 = regexPattern.test(str1);
var boolValue2 = regexPattern.test(str2);
console.log("str1 converted to boolean is:", boolValue1);
console.log("str2 converted to boolean is:", boolValue2);
输出:
str1 converted to boolean is: true
str2 converted to boolean is: false
RegExp() 在前面的示例中的第5行中用于将字符串 “true” 转换成正则表达式对象。 test() 方法无法在没有这个参数的情况下调用。 在创建对象后,可以简单地调用 test() 函数来查看给定的字符串 str1 和 str2 是否包含单词 “yes” 。 test() 函数返回的是true和false,是因为 str1 包含 “true” ,而 str2 包含 “false” 。
2. 使用比较运算符
在JavaScript中,比较运算符 (==)
比较左右两侧的操作数。 如果两个操作数的值相同,则比较运算符返回true,否则返回false。
我们必须构建一个包含 “true” 的字符串,以便使用比较运算符将字符串转换为布尔值。 唯一剩下的事情就是将这个字符串与提供的字符串进行比较。 如果提供的文本包含字母 “true” ,我们将会得到一个布尔值为true。 否则,我们将得到错误的信息。
示例:
var stringToConvert = "false";
var stringToCompare = "true";
var boolVal;
boolVal = (stringToConvert == stringToCompare);
console.log("The boolean value is:", boolVal,
"\nThe data type is:", typeof(boolVal));
输出:
The boolean value is: false
The data type is: boolean
在上面的示例中,我们需要将字符串 stringToConvert 转换为布尔值。为了实现这一目标,我们创建了第二个字符串名为 stringToCompare ,它包含了值 “true” 。然后,我们使用比较运算符比较这两个字符串。由于这两个字符串是不同的,==
运算符给出了错误的结果。变量 boolVal 保存了返回值。最后,我们显示了返回的结果及其数据类型。
3. 使用JSON.parse()函数
JSON.parse() 方法接受一个字符串作为输入,并返回与输入字符串匹配的对象。如果输入的文本包含 “true” 或 “false” ,JSON.parse()方法会将其转换为布尔对象。
示例:
let str = "false";
let boolVal;
boolVal = JSON.parse(str);
console.log("Converting string str to boolean using parse() returns:", boolVal);
输出:
Converting string str to boolean using parse() returns: false
在这个示例中,字符串str被转换为布尔值,使用了JSON.parse()。JSON.parse()返回了布尔值false,因为str包含了单词”false”。这个方法返回的值被打印出来。
4. 使用恒等操作符(===
)
在JavaScript中,可以使用恒等操作符(也称为严格相等操作符)将文本转换为布尔值。这个操作符和比较操作符的使用方式相同,用于将字符串转换为布尔值。如果左右两边相等,恒等操作符返回true;如果不相等,则返回false。 例如:
var stringToConvert = "true";
var stringToCompare = "true";
var boolVal;
boolVal = (stringToConvert === stringToCompare);
console.log("The boolean value is:", boolVal);
输出:
The boolean value is: true
在这个示例中,我们打算从字符串 stringToConvert 创建一个布尔值。 StringToCompare 的值被赋为 “true”。然后应用恒等运算符来比较这两个字符串。由于这两个字符串中的文本相同,恒等运算符返回true。
5. 使用布尔封装类
JavaScript对象 包装器 类是布尔对象。它将项目包装成布尔值。它使用一个项目作为参数。如果对象为空,则Boolean返回false。无论对象中包含什么,如果不为空,Boolean都将返回true。
布尔封装类即使字符串包含 “false” 也会返回true,因为字符串不为空,因此不建议使用它将字符串转换为布尔值。
示例:
var boolVal1 = Boolean('')
var boolVal2 = Boolean('true')
var boolVal3 = Boolean('false')
console.log("Boolean('') returns -", boolVal1);
console.log("Boolean('true') returns -", boolVal2);
console.log("Boolean('false') returns -", boolVal3);
输出:
Boolean('') returns - false
Boolean('true') returns - true
Boolean('false') returns - true
在这个示例中,我们使用Boolean包装类将字符串转换为布尔值。我们可以看到,当我们给Boolean一个空字符串时,字符串会被转换成false。然而,我们给Boolean的两个非空字符串”true”和”false”被转换成了true布尔值。
6. 使用三元运算符
三元运算符需要三个操作数:一个条件语句,一个在条件为真时执行的表达式,一个在条件为假时执行的表达式。使用这种技术,条件语句将把提供的字符串与”true”进行比较,以将字符串转换为布尔值。如果条件为真,则三元运算符将返回true;否则返回false。
示例:
var str = "false";
var boolVal;
boolVal = (str == "true" ? true : false);
console.log("The boolean value is:", boolVal);
输出:
The boolean value is: false
我们打算将此示例中的字符串str更改为布尔值。在代码的第3行使用了具有三个参数的三元运算符。条件语句的第一个参数<,str与另一个字符串”true”进行比较,使用==
运算符。第二个和第三个参数分别返回true和false的布尔值。在我们的情况下,三元运算符的条件出现错误,因为str包含值”false”。因此,三元运算符返回false。之后,我们打印了返回的值。
7. 使用Switch-case
我们可以利用switch-case语句将各种字符串值转换为布尔值。它允许我们将包含”True”、”1″和其他类似字符的字符串转换为布尔值true。同样,我们可以讨论一些具有误导性的场景。
示例:
var str1 = "0";
var str2 = "yes";
function scFunc(str)
{
switch(str)
{
case "true":
return true;
case "1":
return true;
case "yes":
return true;
default:
return false;
}
}
console.log('The string "0" converted to boolean becomes -', scFunc(str1));
console.log('The string "true" converted to boolean becomes -', scFunc(str2));
输出:
The string "0" converted to boolean becomes - false
The string "true" converted to boolean becomes - true
在这个示例中, str1 和 str2 是我们想要转化为布尔值的两个文本。为了实现这个目标,我们创建了一个名为 scFunc() 的方法,其中包含一个switch-case表达式。我们在switch-case语句中定义了三种不同的情况—— “true”,”1” 和 “yes” 。如果给定的字符串是这三个值中的任何一个, scFunc() 函数会返回true。如果给定的字符串是其他值,函数会返回false。
结论
JavaScript提供了几种方法来将包含布尔值的字符串转化为布尔值。不建议使用 双重非运算符 或布尔包装类来进行文本到布尔值的转换。
我们可以使用 switch-case 表达式将不同类型的字符串值转化为布尔值。通过使用正则表达式使用 test() 方法来匹配字符串中的文本。如果找到匹配项,返回true;否则返回false。