0

是否有一个函数或语句可以用来检查我可以从 php、html 或某些可以提供 javascript 无法理解为布尔值的 true 或 false 值的来源获得的真/假。所以我可以检查字符串 true 或 boolean true 或 1 值(我认为 php 返回 true ..)

就像:

    var trueVal = true;
    if ( trueVal == true || trueVal === true || trueVal == "true" || trueVal == "TRUE" || trueVal == "1" || trueVal == 1 ) {

    //

    }

这有意义吗?有没有更简单的方法来做到这一点?

谢谢!

4

4 回答 4

1

如果您要查找的值看起来像某种形式的单词“true”或非零整数,请将其转换为字符串,然后检查它是否看起来像单词 true 或非零整数。

function isPHPTrue(x) {
  x = String(x);
  if (/^(true|[+-]?0*[1-9][0-9]*)$/i.test(x)) { return true; }
  if (/^(false|[+-]?0+)$/i.test(x)) { return false; }
  throw new Error('Not obviously true or false: ' + x);
}
于 2012-08-05T18:55:03.813 回答
1

好吧,如果您可以确保true正确传递了,那么它可能会容易得多:

if( trueVal)

唯一会出现问题的是如果您有字符串"false"or "0",但这可以修复:

if( trueVal && !trueVal.toString().match(/^(false|0)$/i))
于 2012-08-05T18:45:44.770 回答
0

据我所知,没有一种“通用”的方法可以做到这一点,例如某种元布尔检查功能,但您可以减少比较次数:

trueVal="1";
if(trueVal*1==1||trueVal.toLowerCase()=="true"){
    //do stuff
}

trueVal*1需要"1",1true; _ trueVal.toLowerCase()=="true"需要"true""tRuE"以及所有大写/小写变体。

希望这有帮助:)

于 2012-08-05T18:52:46.760 回答
0
function convertToBoolean(input) {
    return input.toLowerCase() == "true" || input == 1;
}

// And to test this works:

console.log(convertToBoolean("TRUE"));  //true, boolean
console.log(convertToBoolean("true"));  //true, boolean
console.log(convertToBoolean("false")); //false, boolean
console.log(convertToBoolean("1"));     //true, boolean
console.log(convertToBoolean(0));       //false, boolean
// and of course...
console.log(convertToBoolean(true));    //true, boolean
于 2012-08-05T19:24:36.397 回答