当值可能不是正确的布尔值时,如何测试 true

how to test for true, when value may not be proper boolean

本文关键字:何测试 true 测试 布尔值      更新时间:2023-09-26

是否有一个函数或语句可以用来检查我可能从 php 或 html 或某些提供 true 或 false 值的源代码中获取的真/假,javascript 不会将其理解为布尔值。所以我可以检查字符串 true 或布尔值 true 或 1 值(我认为 php 返回 true 的值......

所以喜欢:

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

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

谢谢!

好吧,如果你能确保true正确通过,那么它可能会容易得多:

if( trueVal)

唯一有问题的时候是如果你有字符串"false""0",但这是可以修复的:

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

如果您要查找的值看起来像某种形式的单词"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);
}

据我所知,没有一种"通用"方法可以做到这一点,就像一种元布尔校验函数一样,但你可以减少比较的数量:

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

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

希望这对:)有所帮助

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