将字符串转换为布尔值

有时候,我们可能会遇到将值的字符串表示转换为实际值的问题。这通常对于数字值来说很简单。然而,布尔值的字符串表示可能会有些棘手。

这个问题是由于在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