原文: JavaScript String to Boolean – How to Parse a Boolean in JS

当你操作数据、从表单中接收数值以及以其他方式处理数据时,这些数值可能是不正确的数据类型。

假设你希望你的值是一个布尔值,要么是 true,要么是 false,但它被存储为一个字符串——"true" 或 "false"。这样一来,要想达到你的预期目的就变得很有挑战性,所以你必须首先将这些布尔字符串值转换成实际的布尔值。

在这篇文章中,你将学习如何使用 JavaScript 中的不同方法将字符串转换为布尔值。如果你着急了解,下面是操作方法:

// 使用恒等运算符
console.log((boolString === "true")); // true / false

// 使用正则
console.log((/true/).test(boolString)); // true

如果你不着急,让我们来了解每一种方法和更多的内容。

如何用恒等运算符(===)将一个字符串解析为布尔值

严格运算符是恒等运算符的另一个名字。只有当被比较的两个值是相同的时候,它才会返回 true。这意味着它们的字母大小写——以及其他一切——也必须是相同的。否则,它将返回 false

在这种情况下,你想把一个字符串转换为布尔值,这意味着你要把它与字符串 "true " 进行比较。如果两个值相同,它将返回布尔值 true,否则,它将返回布尔值 false

let boolString = "true"; 
let boolValue = (boolString === "true"); 
console.log(boolValue); // true

这是一个严格相等运算符,将对字母大小写进行严格比较:

let boolString = "True"; 
let boolValue = (boolString === "true"); 
console.log(boolValue); // false

你可以使用 toLowerCase() 方法来解决这个问题。它首先将字符串值转换为适合比较的字母大小写,然后再进行比较。

let boolString = "True"; 
let boolValue = (boolString.toLowerCase() === "true"); 
console.log(boolValue); // true

另一个与恒等运算符非常相似的方法是正则方法,你可以测试两个值是否匹配。

如何用正则将一个字符串解析为布尔值

Regex 正则是 Regular Expressions 的缩写。这一个庞大的编程主题,你可以用 regex 作为模式来匹配和测试字符串的字符组合。

一个非常简单的 regex 指南会告诉你,表达式要放在两个斜线(/)之间。例如,如果你想测试 "true" 字符串值,你会这样做:

let boolString = "true"; 
let boolValue = (/true/).test(boolString);
console.log(boolValue); // true

这也是区分大小写的:

let boolString = "True"; 
let boolValue = (/true/).test(boolString);
console.log(boolValue); // false

你必须在正则表达式的末尾添加 i 标志,以便进行不区分大小写的匹配。

let boolString = "True"; 
let boolValue = (/true/i).test(boolString);
console.log(boolValue); // true

如何用双 NOT 运算符(*!!*)将一个字符串解析为布尔值

你还应该知道如何使用单NOT运算符,你可以用它来反转一个结果。

当你在一个字符串前面加上 NOT 运算符时,它将返回 truefalse。如果它是一个空字符串,它将返回 true,否则返回 false

let stringValue1 = !'true';
let stringValue2 = !'';

console.log(stringValue1); // false
console.log(stringValue2); // true

这不是你想要的。相反,你想把一个字符串转换为布尔值,也就是说,当字符串为空时,它应该返回 false,而在其他情况下,它应该返回 true

这时你可以使用双非逻辑运算符。你用它来反转单个 NOT 运算符的结果:

let stringValue1 = !!'true';
let stringValue2 = !!'';

console.log(stringValue1); // true
console.log(stringValue2); // false

你用这个方法将任何字符串值转换为布尔值。当它是空的,它返回 false。否则,它返回 true

这个方法的一个缺点是,你不能把一个 "false" 的字符串转换成一个 false 的布尔值。只有当它是一个空字符串时才会返回 false

如何用布尔封装器将一个字符串解析为布尔值

JavaScript 的布尔对象代表一个布尔值。这个方法就像双非运算符一样。

// 语法
Boolean() 

当你向布尔对象传递一个字符串值时,它将评估为 true,但当你传递一个空字符串时,它将评估为 false

let stringValue1 = Boolean('true');
let stringValue2 = Boolean('');

console.log(stringValue1); // true
console.log(stringValue2); // false

这个方法的唯一限制是,如果你在引号之间添加空格代表字符串,它将返回 true——意味着它将其视为一个字符串。

let stringValue = Boolean(' ');

console.log(stringValue); // true

注意:当你转换一个 "false" 的字符串时,你会期望它返回一个布尔值为 false。但这将返回 true,因为它只在是空字符串时返回 false

总结

在这篇文章中,你已经学会了如何将一个字符串值转换为布尔值。涵盖所有情况的最佳方法是恒等运算符,而布尔对象和双非运算符有更好的语法。

祝你编码愉快!