当值可能不是正确的布尔值时,如何测试 true
how to test for true, when value may not be proper boolean
是否有一个函数或语句可以用来检查我可能从 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"
、1
和true
; 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
相关文章:
- 模糊事件的Javascript测试
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- AngularJS-使用'true'属性
- 当值可能不是正确的布尔值时,如何测试 true
- 在我的Javascript单元测试中,expect(true).toBeTruthy()失败
- 测试对历史记录 API 的支持在 IE 中返回 true
- 测试数组中的任何项是否返回 true
- 在 Android < 3 上测试 Overflow-y:Auto Return true,即使它不起作用
- 如何在运行JEST测试用例时将全局变量设置为true
- 长度正则表达式在null上测试为true
- 如果语句测试=true但获胜,则会出现奇怪的javascript问题't执行
- 在modernizr.load中测试true和false条件
- 水豚:js =>True导致测试失败
- 只有当模式在整个字符串中匹配时,Regex测试才应该返回true.Javascript
- KnockoutJs 1.3测试版._destroy:false在UI上的结果与_destroy:true相同
- 如何使用毛毯与QUnit测试运行jQuery.noConflict(true)
- if 语句在测试值是否在某个范围内时始终返回 true
- 如果数组中有数字 1-9,则测试 true 或 false