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

Posted

技术标签:

【中文标题】如何在 Javascript 中比较字符串和布尔值?【英文标题】:How do I compare string and boolean in Javascript? 【发布时间】:2011-08-05 06:29:01 【问题描述】:

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

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

那么我如何在 javascript 中从 String 解析 bool 呢?

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

【问题讨论】:

【参考方案1】:

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

let data = value === "true";

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

【讨论】:

JSON.parse() 会将服务器布尔值解码为 javascript 布尔值,因此您可以调用 (!myJSONObject.myBool) 它比 eval 更推荐。 json.org 这真是矫枉过正。简单地针对“true”测试字符串值至少同样有效。除了完全满足他的需要之外,它还具有普遍的便携性。 @chomp 它确实回答了这个问题如何在 JavaScript 中从字符串中解析 bool? 但是,我只需检查字符串 'false' 在这一点上它变成了一个小论据,因为暗示“香蕉”是真的并不比暗示“香蕉”是假的更有效。 :) 这个东西我后来发现的,因为项目没有这个[json.js]。我使用 jQuery.parseJSON()。谢谢【参考方案2】:
如果其中一个操作数是布尔值,则将布尔操作数转换为 1,如果为真,则为 +0。 在将数字与字符串进行比较时,尝试将字符串转换为数值。

来自MDN Equality Operators page

例子:

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

【讨论】:

【参考方案3】:
var data = true;
data === "true" //false
String(data) === "true" //true

这很好用。

【讨论】:

【参考方案4】:

试试表达式 data == "true"

测试:

data = "false" -- 值为 false

date = "true" -- 值为 true

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

【讨论】:

【参考方案5】:

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

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

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

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

快乐编码。

【讨论】:

【参考方案6】:

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

"value1" : false, "value2" : true

【讨论】:

【参考方案7】:
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”语句——测试代码中的真假和evals,将其转换为布尔值

【讨论】:

向基类(如字符串)添加函数往往会引发可维护性和清晰度问题。 虽然很聪明——也许我只是一个类型安全的坚持者——我永远不会在一百万年内鼓励任何人将此代码用于任何实际目的。【参考方案8】:
if(data+''=='true')
    alert('true');
  

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

【讨论】:

【参考方案9】:

为了比较 JavaScript 中的字符串和布尔值,让我们看下面的例子。它返回真:

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

https://www.tutorialspoint.com/How-do-I-compare-String-and-Boolean-in-JavaScript

【讨论】:

以上是关于如何在 Javascript 中比较字符串和布尔值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中将字符串转换为布尔值?

Javascript 中 == 和 === 的区别

如何使用javascript将字符串数组转换为布尔值? [复制]

如果数组中的所有值都为真(字符串)并且其中一个值为假(字符串),则如何返回布尔值 true 停止使用 Javascript 进行检查

(14)awk布尔值比较和逻辑运算

Javascript - 如何按 3 种不同的属性类型对对象数组进行排序? (字符串、整数、布尔值)