我如何将字符串转换为布尔值在JavaScript?
English Language Content
我如何将字符串转换为布尔值在JavaScript?
我可以转换成一个字符串,表示一个布尔值(比如,'真正的','假')到JavaScript中的内在类型?
我有一个隐藏的HTML表单更新后,用户的选择为基础的名单之内。 这个表格包含一些领域,代表布尔值,并具有内在动态的布尔值填充。 但是,一旦这个值放入隐藏的输入字段就成了一个字符串。
我唯一能找到,以确定该字段的布尔值,一旦被转换成一个字符串,是取决于它的字符串表示的文本值。
var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';
有没有更好的方式来完成这项工作?
#: 263965 javascript User: Kevin
Answer: 264037
你也许应该谨慎使用您的特定需求这两种方法:
var myBool = Boolean("false"); // == true
var myBool = !!"false"; // == true
任何字符串这不是空字符串使用他们的计算结果为true
虽然他们是最干净的方法,我能想到的关于对布尔的转换,我认为他们不是你要找的。
关于你建议的方式,可以让使用的身份运营商===
它不作任何隐式类型转换时,比较不同类型的变量有严格的,而不是平等的经营者==
它:
var isTrueSet = (myValue === 'true');
#: 264037 javascript User: guinaps
Answer: 264180
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
alert("true".bool());
#: 264180 javascript User: Shadow2531
Answer: 1414175
stringToBoolean: function(string){
switch(string.toLowerCase()){
case "true": case "yes": case "1": return true;
case "false": case "no": case "0": case null: return false;
default: return Boolean(string);
}
}
#: 1414175 javascript User: Steven
Answer: 264071
记住匹配情况:
var isTrueSet = (myValue.toLowerCase() === 'true');
此外,如果它是一个表单元素复选框,还可以检测如果选中复选框:
var isTrueSet = document.myForm.IS_TRUE.checked;
假设,如果它被选中,这是“设置”等于事实。 这种计算为真/假。
#: 264071 javascript User: Jared Farrish
Answer: 264097
您的解决方案是好的。
用===
也只是愚蠢在这种情况下,由于外地的value
将永远是string
#: 264097 javascript User: insin
Answer: 920942
如果(字符串(1)==“真”)( / /真块 ) 否则( / /假块 )
#: 920942 javascript User: n/a
Answer: 323546
我认为这是非常普遍的: 如果(字符串(1)==“真”)...
当然:
字符串(真)==“真正的”/ /返回true
字符串(假)==“真正的”/ /返回false
字符串(“真”)==“真实”/ /返回true
字符串(“假”)==“真实”/ /返回false
#: 323546 javascript User: n/a
Answer: 264109
如果有一些其他的代码的布尔值转换为字符串,您需要确切知道这些代码存储true / false值。 无论是或需要获得一个函数,扭转这一转换。
有无穷多个方法来表示字符串中的布尔值(“真”,“Y”型,“1”等)。 所以,你不应该依赖一些通用字符串到布尔转换器如布尔(myValue)。 您需要使用一个例行程序,推翻了原来的布尔到字符串的转换,无论是。
如果你知道它能够将真正的布尔值为“true”字符串,那么你的示例代码罚款。 除了你应该使用== ===代替,因此没有自动类型转换。
#: 264109 javascript User: JW
Answer: 264105
你需要单独的(在你的想法)您选择的价值和该值的表示。
选择在JavaScript逻辑的一个点,他们需要从字符串哨兵过渡到本地类型,做一个比较有,最好的地方只有得到执行的每个需要转换价值的一次。 请记住,以解决需要做些什么,如果字符串不是一个哨兵的脚本知道(即你默认为true或假?)
换句话说,是的,你需要依赖于字符串的值。 :-)
#: 264105 javascript User: staticsan
Answer: 263969
var myBool = Boolean.parse("true");
或
var myBool = Boolean("true");
或
var myBool = !!"true";
不知道第一个是IE特定的。
#: 263969 javascript User: FlySwat
Comments for #: 263969
下面是与使用布尔的事情(“真”)。 这是一个有点误导,因为布尔(“假”)和布尔('跆拳道“)评估的也是如此。你的第三个答案是非常相似。 #:120241 Kevin