如何在 Javascript 中比较字符串和布尔值?

How do I compare string and boolean in Javascript?

提问人: 提问时间:4/14/2011 最后编辑:acdcjunior 更新时间:12/9/2021 访问量:57702

问:

我从服务器获得了 Json。我的回答是,但它是 Json,所以它的浏览器类型是而不是 ."false"boolStringbool

因此,如果我在想检查时运行,那么它们就不起作用。(!data)"false" == false

那么我该如何在JavaScript中解析呢?boolString

"true" == true和。然后代码可以检查它是什么 [ 和"false" == false(!data)truefalse]

JavaScript 字符串 比较 boolean-logic boolean

评论


答:

0赞 jnpdx 4/14/2011 #1
String.prototype.revalue= function(){
  if(/^(true|false|null|undefined|NaN)$/i.test(this)) return eval(this);
  if(parseFloat(this)+''== this) return parseFloat(this);
  return this;
}

寄件人: http://www.webdeveloper.com/forum/showthread.php?t=147389

实际上,你只需要函数中的第一个“if”语句 -- 测试在代码中查找 true 或 false 以及 s it,将其转换为布尔值eval

评论

3赞 Larry K 4/14/2011
向基类(如 String)添加函数往往会引发可维护性和清晰度问题。
3赞 kqnr 4/14/2011
虽然我很聪明——也许我只是一个类型安全的坚持者——但我永远不会鼓励任何人将这段代码用于任何实际目的。
4赞 Larry K 4/14/2011 #2

尝试表达式数据 == “true”

测试:

data = “false” -- 值将为 false

date = “true” -- 值将为 true

此外,修复您的 JSON。JSON 可以很好地处理布尔值。

18赞 alex 4/14/2011 #3

我只会明确检查字符串."true"

let data = value === "true";

否则,您可以使用 JSON.parse() 将其转换为原生 JavaScript 值,但如果您知道它只是字符串或您将收到,则会造成很大的开销。"true""false"

评论

1赞 Roberto Alarcon 4/14/2011
JSON.parse() 会将服务器布尔值解码为 javascript 布尔值,因此您可以调用 (!myJSONObject.myBool) 它比 eval 更推荐。json.org
1赞 kqnr 4/14/2011
这实在是矫枉过正了。简单地根据“true”测试字符串值至少同样有效。除了完全满足他的需求外,它还具有普遍的便携性。
0赞 alex 4/14/2011
@chomp 它确实回答了如何在 JavaScript 中从字符串解析布尔的问题?然而,我只会检查字符串。'false'
0赞 kqnr 4/14/2011
在这一点上,它变成了一个微不足道的论点,因为认为“香蕉”是真的并不比认为“香蕉”是假的更有效。:)
0赞 4/14/2011
这个东西是我后来发现的,因为项目没有这个 [json.js]。我使用jQuery.parseJSON()。谢谢
4赞 simplyharsh 4/14/2011 #4

如果它只是一个 json “false”/“true”,你可以使用

if(! eval(data)){
    // Case when false
}

如果您将代码限制为仅接受来自服务器的 JSON 数据,并且始终 jsonParse 或将其评估为 JS 对象(类似于 jquery getJSON,它会更干净。它只接受JSON响应,并在传递给回调函数之前将其解析为对象)。

这样一来,您不仅可以将布尔值作为 boolean-from-server 获得布尔值,而且还会保留所有其他数据类型,然后您可以使用例程表达式语句而不是特殊语句。

祝您编码愉快。

1赞 AndrewR 4/14/2011 #5

我认为您需要查看JSON数据是如何生成的。你绝对可以在 JSON 中有一个普通的 JS 布尔值 false。

{ “value1” : false, “value2” : true }

19赞 Yukulélé 1/29/2013 #6
  • 如果其中一个操作数是布尔值,则将布尔操作数转换为 1(如果为 true)和 +0(如果为 false)。
  • 将数字与字符串进行比较时,请尝试将字符串转换为数值。

来自 MDN Equality Operators 页面

例子:

true == "true";   // 1 == NaN → false
true == "1";      // 1 == 1   → true
false == "false"; // 0 == NaN → false
false == "";      // 0 == 0   → true
false == "0";     // 0 == 0   → true
12赞 Yura Galavay 11/22/2016 #7
var data = true;
data === "true" //false
String(data) === "true" //true

这工作正常。

0赞 gifpif 3/29/2018 #8
if(data+''=='true'){
    alert('true');
}  

通过附加空白字符串将布尔值转换为字符串。然后与 Stringobject 进行比较。