如何在 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)
可以检查是什么[true
和false
]
【问题讨论】:
【参考方案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”语句——测试代码中的真假和eval
s,将其转换为布尔值
【讨论】:
向基类(如字符串)添加函数往往会引发可维护性和清晰度问题。 虽然很聪明——也许我只是一个类型安全的坚持者——我永远不会在一百万年内鼓励任何人将此代码用于任何实际目的。【参考方案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将字符串数组转换为布尔值? [复制]
如果数组中的所有值都为真(字符串)并且其中一个值为假(字符串),则如何返回布尔值 true 停止使用 Javascript 进行检查