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

发布于 2024-11-01 09:00:56 字数 427 浏览 5 评论 0原文

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

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

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

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

I got the Json "false" from server. I respond as bool but it's Json so it's in browser type is String instead of bool.

So if I run (!data) whenever I want to check "false" == false then they not worked.

So how can I parse bool from String in JavaScript then?

"true" == true and "false" == false. Then the code (!data) can check what it is [true and false]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

成熟的代价 2024-11-08 09:00:56
  • 如果其中一个操作数是布尔值,则将布尔操作数转换为 1(如果为 true),如果为 false,则将其转换为 +0。
  • 将数字与字符串进行比较时,尝试将字符串转换为数值。

来自 MDN 相等运算符页面

示例:

true == "true";   // 1 == NaN → false
true == "1";      // 1 == 1   → true
false == "false"; // 0 == NaN → false
false == "";      // 0 == 0   → true
false == "0";     // 0 == 0   → true
  • If one of the operands is a boolean, convert the boolean operand to 1 if it is true and +0 if it is false.
  • When comparing a number to a string, try to convert the string to a numeric value.

from MDN Equality Operators page

Examples:

true == "true";   // 1 == NaN → false
true == "1";      // 1 == 1   → true
false == "false"; // 0 == NaN → false
false == "";      // 0 == 0   → true
false == "0";     // 0 == 0   → true
又爬满兰若 2024-11-08 09:00:56

我只是明确检查字符串“true”。

let data = value === "true";

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

I would just explicitly check for the string "true".

let data = value === "true";

Otherwise you could use JSON.parse() to convert it to a native JavaScript value, but it's a lot of overhead if you know it's only the strings "true" or "false" you will receive.

﹎☆浅夏丿初晴 2024-11-08 09:00:56
var data = true;
data === "true" //false
String(data) === "true" //true

这很好用。

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

This works fine.

独守阴晴ぅ圆缺 2024-11-08 09:00:56

尝试表达式 data == "true"

测试:

data = "false" -- 值将为 false

date = "true" -- 值将为 true

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

Try expression data == "true"

Tests:

data = "false" -- value will be false

date = "true" -- value will be true

Also, fix your JSON. JSON can handle booleans just fine.

像极了他 2024-11-08 09:00:56

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

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

如果你限制代码只接受来自服务器的 JSON 数据,并且总是 jsonParse 或将其评估为 JS 对象(something就像 jquery getJSON 一样,它只接受 JSON 响应并在传递给回调函数之前将其解析为对象。

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

快乐编码。

If its just a json "false"/"true", you can use,

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

It would be more cleaner, if you restrict the code to accept only JSON data from server, and always jsonParse or eval it to JS object (something like jquery getJSON does. It accepts only JSON responses and parse it to object before passing to callback function).

That way you'll not only get boolean as boolean-from-server, but it will retain all other datatypes as well, and you can then go for routine expressions statements rather than special ones.

Happy Coding.

罪歌 2024-11-08 09:00:56

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

{ “值1”:假,“值2”:真 }

I think you need to look at how the JSON data is being generated. You can definitely have a normal JS boolean false in JSON.

{ "value1" : false, "value2" : true }

﹎☆浅夏丿初晴 2024-11-08 09:00:56
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,然后对其进行评估,将其转换为布尔值

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;
}

From: http://www.webdeveloper.com/forum/showthread.php?t=147389

Actually, you just need the first "if" statement from the function -- tests to find true or false in the code and the evals it, turning it into the boolean value

太阳公公是暖光 2024-11-08 09:00:56
if(data+''=='true'){
    alert('true');
}  

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

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

Convert boolean to string by appending with blank string. and then compare with Stringobject.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文