【问题标题】:How do I compare string and boolean in Javascript?如何在 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]

【问题讨论】:

    标签: javascript string comparison boolean-logic boolean


    【解决方案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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2021-11-05
                  • 2011-08-21
                  • 2015-02-24
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多