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

时间:2011-04-14 05:49:27

标签: javascript string comparison boolean-logic boolean

我从服务器获得了Json "false"。我的回复为bool,但它是Json,因此浏览器类型为String而不是bool

因此,如果我想检查(!data)时运行"false" == false,那么它们就无效了。

那么如何在JavaScript中解析bool中的String呢?

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

9 个答案:

答案 0 :(得分:13)

我只是明确检查字符串"true"

let data = value === "true";

否则您可以使用JSON.parse()将其转换为原生JavaScript值,但如果您知道它只会收到您将收到的字符串"true""false",则会产生大量开销。< / p>

答案 1 :(得分:9)

“如果其中一个操作数是布尔值,则布尔操作数如果为真,则转换为1,如果为假,则转换为+0。” (来自MDN Comparison Operators page

示例:

true == "true"; //false
true == "1"; //true
false == "false"; //false
false == ""; //true
false == "0"; //true

答案 2 :(得分:7)

var data = true;
data === "true" //false
String(data) === "true" //true

这很好用。

答案 3 :(得分:4)

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

试验:

data =“false” - 值为false

date =“true” - 值为true

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

答案 4 :(得分:4)

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

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

如果你将代码限制为仅接受来自服务器的JSON数据,并且总是jsonParse或eval它到JS对象(类似于jquery getJSON的东西),它会更清晰。它只接受JSON响应并将其解析为传递给回调函数之前的对象)。

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

快乐编码。

答案 5 :(得分:1)

我认为您需要了解如何生成JSON数据。你肯定可以在JSON中使用普通的JS布尔值假。

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

答案 6 :(得分:0)

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,然后eval将它转换为布尔值

答案 7 :(得分:0)

if(data+''=='true'){
    alert('true');
}  

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

答案 8 :(得分:0)

要比较JavaScript中的字符串和布尔值,让我们看下面的示例。返回true:

false == "0"; //true
true == "1"; //true
false == ""; //true

以下内容返回false:

false == "false"; //false
true == "true"; //false

此外,也尝试以下示例:

var data = true;
data === "true" //false
String(data) === "true" //true

MongoPlayground