2

是否有一个函数(或语言构造)我可以用来仅评估以下值true(以及任何其他值false)?

var trueValues = [
    true,               // boolean literal
    "true",             // string literal
    "\t tRUe ",         // case-insensitive string literal with leading/trailing whitespace
    1,                  // number literal
    1.00,               // number literal
    "1",                // string literal of number literal
    "1.0",              // string literal of number literal
    "1.00000000"        // string literal of number literal
];
4

2 回答 2

4

假设您将这些作为示例,并且您的真正意思是:

  1. 解释为字符串,仅包含不区分大小写的单词“true”以及可选的周围空格。
  2. 解释为数字,计算结果正好为 1。

以下两个条件将过滤掉所有异常值。

/^\s*true\s*$/i.test(value) || Number(value) == 1
于 2012-07-10T17:45:16.870 回答
1

以下将修剪任何空白,将其更改为小写,并将其与字符串文字进行比较true。将返回true值的另一种情况是1传递给时返回的数字parseInt()

if(!String.prototype.trim) {
  bool = (val.replace(/^\s\s*/, '').replace(/\s\s*$/, '').toLowerCase() === "true" || Number(val) === 1)
} else {
  bool = (val.trim().toLowerCase() === "true" || Number(val) === 1)
}
于 2012-07-10T17:44:49.500 回答