我可以在JavaScript中将表示布尔值的字符串(例如“true”、“false”)转换为内部类型吗?

我有一个隐藏的HTML表单,它根据用户在列表中的选择进行更新。此表单包含一些表示布尔值的字段,并用内部布尔值动态填充。但是,一旦将该值放入隐藏的输入字段,它就会变成字符串。

一旦字段转换为字符串,我唯一能找到的确定它的布尔值的方法就是依赖于它的字符串表示的文字值。

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';

有没有更好的方法来实现这一点?


当前回答

    MyLib.Convert.bool = function(param) {
         var res = String(param).toLowerCase();
         return !(!Boolean(res) || res === "false" || res === "0");
     }; 

其他回答

基于上面Steven的回答,我编写了这个函数作为字符串输入的通用解析器:

parse:
  function (value) {
    switch (value && value.toLowerCase()) {
      case null: return null;
      case "true": return true;
      case "false": return false;
      default: try { return parseFloat(value); } catch (e) { return value; }
    }
  }

将字符串转换为布尔值

var vIn = "true";
var vOut = vIn.toLowerCase()=="true"?1:0;

将字符串转换为数字

var vIn = 0;
var vOut = parseInt(vIn,10/*base*/);

你为什么不试试这样的

Boolean(JSON.parse((yourString.toString()).toLowerCase()));

当给出其他文本而不是true或false时,无论情况如何,它都会返回一个错误,并且它还会将数字捕获为

// 0-> false
// any other number -> true

如果String对象上有一个函数为我们做这件事,那就太好了,但是我们可以很容易地添加自己的原型来扩展String对象。

在使用之前,将此代码添加到项目中的某个位置。

String.prototype.toBoolean = function() {
   return String(this.valueOf()).toLowerCase() === true.toString();
};

试着这样做:

var myValue = "false"
console.log("Bool is " + myValue.toBoolean())
console.log("Bool is " + "False".toBoolean())
console.log("Bool is " + "FALSE".toBoolean())
console.log("Bool is " + "TRUE".toBoolean())
console.log("Bool is " + "true".toBoolean())
console.log("Bool is " + "True".toBoolean())

因此,最初问题的结果是:

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue.toBoolean();

这是我最近遇到的最简单的布尔转换方法。考虑添加它。

JSON.parse('true');

let trueRespons=JSON.parse('true');let falseResponse=JSON.parse('false');console.log(trueResponse);console.log(错误响应);