原文: 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 运算符时,它将返回 true
或 false
。如果它是一个空字符串,它将返回 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
。
总结
在这篇文章中,你已经学会了如何将一个字符串值转换为布尔值。涵盖所有情况的最佳方法是恒等运算符,而布尔对象和双非运算符有更好的语法。
祝你编码愉快!