将字符串转换为布尔值
有时候,我们可能会遇到将值的字符串表示转换为实际值的问题。这通常对于数字值来说很简单。然而,布尔值的字符串表示可能会有些棘手。
这个问题是由于在JavaScript中,任何非空字符串都被认为是真值。此外,字符串可能具有不同的大小写或空格,这使得直接将它们与常量进行比较更加困难。
为了解决这个问题,通常可以使用一些转换方法,比如 String.prototype.toLowerCase()
和 String.prototype.trim()
,使值的字符串表示更加一致。此外,在某些情况下,使用一个可接受值的数组可能会更容易进行转换。
const toBoolean = (value, truthyValues = ['true']) => {
const normalizedValue = String(value).toLowerCase().trim();
return truthyValues.includes(normalizedValue);
};
toBoolean('true'); // true
toBoolean('TRUE'); // true
toBoolean('True'); // true
toBoolean('tRue '); // true
toBoolean('false'); // false
toBoolean('FALSE'); // false
toBoolean('False'); // false
toBoolean('fAlse '); // false
toBoolean('YES', ['yes']); // true
toBoolean('no', ['yes']); // false