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 に評価されます。

次の 2 つの条件は、例外的な値をすべて除外します。

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

以下は、空白を削除して小文字に変更し、文字列literal と比較しますtrue。値を返すもう 1 つのケースは、渡されたときにtrue返される数値です。1parseInt()

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 に答える