Javascript 当值可能不是正确的布尔值时,如何测试true
是否有一个函数或语句可用于检查从php、html或某些源代码中获取的真/假值,这些函数或语句可提供javascript无法理解为布尔值的真或假值。因此,我可以检查字符串true、布尔值true或1值(我认为php返回的值为true) 就像:Javascript 当值可能不是正确的布尔值时,如何测试true,javascript,Javascript,是否有一个函数或语句可用于检查从php、html或某些源代码中获取的真/假值,这些函数或语句可提供javascript无法理解为布尔值的真或假值。因此,我可以检查字符串true、布尔值true或1值(我认为php返回的值为true) 就像: var trueVal = true; if ( trueVal == true || trueVal === true || trueVal == "true" || trueVal == "TRUE" || trueVal == "1"
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))
据我所知,没有一种“通用”的方法可以做到这一点,比如一种元布尔检查函数,但可以减少比较的数量:
trueVal="1";
if(trueVal*1==1||trueVal.toLowerCase()=="true"){
//do stuff
}
trueVal*1
采用“1”
、1
和true
trueVal.toLowerCase()=“true”
接受“true”
、“true”
和所有大小写变体
希望这有帮助:)如果您要查找的值在某种形式上类似于单词“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);
}
false的值是多少?同样的困境?如果不是,你可以检查它是否为0?我真的无法控制
true
的传递方式,因为它来自不同的来源。。这将“0”
和“FALSE”
视为真实。@MikeSamuel我的意思是把i
,而不是g
。。。至于“0”
,我也会添加它。在尝试正则化它们之前,已更新为将整数转换为字符串。真是太棒了!似乎在几乎所有可能的情况下都有效。谢谢trueVal*1
如何处理true
?谢谢@托马斯true==1
给出了true
,所以true*1==1*1==1==true
:)谢谢。我对正则表达式知之甚少。这是否意味着搜索一个潜在的长字符串以查找true
?这给我提供了true
或false
,然后总是有一个错误,即它显然不是一个或多个other@thomas,您的JSFIDLE总是会引发错误,因为您将return
替换为alert
<代码>返回结束函数调用。当您改为使用alert
时,它不会结束函数调用,因此会继续抛出错误。@thomas,不,regex没有在长字符串中搜索true。^
和$
锚定字符串,以便整个文本必须为“true”或非零整数。结尾的i
使其不区分大小写。
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