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

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

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

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

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


当前回答

可以按如下方式使用JSON.parse:

var trueOrFalse=“真”;result=JSON.parse(trueOrFalse.toLowerCase());if(结果==真)警报(“这是真的”);其他的警报(“这是错误的”);

在这种情况下,toLowerCase很重要

其他回答

上帝啊,这些答案中有些简直太疯狂了。我喜欢JS和它的无数种方式。

我的偏好是:

testVar = testVar.toString().match(/^(true|[1-9][0-9]*|[0-9]*[1-9]+|yes)$/i) ? true : false;

我建议您在图像中创建一个类似于第三个选项的函数,并将其作为导出放在helper类中,并在需要时重用此函数。

function parseBool(value: any, defaultsOnUndefined?: boolean) {
  if (['true', true, 1, '1', 'yes'].includes(value)) {
    return true;
  }
  if (['false', false, 0, '0', 'no', null].includes(value)) {
    return false;
  }
  return defaultsOnUndefined;
}

OR

function parseBool(value: any) {
  if (['true', true, 1, '1', 'yes'].includes(value)) {
    return true;
  }
  return false;
}

将字符串转换为布尔值的最简单方法如下:

Boolean(<stringVariable>)

以下内容就足够了

String.prototype.boolean = function() {
    return "true" == this; 
};

"true".boolean() // returns true "false".boolean() // returns false