如何测试true,当值可能不合适时布尔值

时间:2012-08-05 18:43:10

标签: javascript

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

所以喜欢:

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

    //

    }

这有意义吗?有更简单的方法吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

如果你能确保true正确传递,那么它可能会容易得多:

if( trueVal)

唯一一次出现问题的方法是,如果你有字符串"false""0",但可以修复:

if( trueVal && !trueVal.toString().match(/^(false|0)$/i))

答案 1 :(得分: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);
}

答案 2 :(得分:0)

据我所知,没有"一般"这样做的方式,就像一种元布尔检查函数,但你可以减少比较次数:

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

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

希望这有助于:)

答案 3 :(得分: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