Как сравнить строку и логическое значение в Javascript? - PullRequest
13 голосов
/ 14 апреля 2011

Я получил Json "false" с сервера. Я отвечаю как bool, но это Json, поэтому он в браузере типа String вместо bool.

Так что, если я запускаю (!data) всякий раз, когда я хочу проверить "false" == false, тогда они не работают.

Так как же тогда разобрать bool из String в JavaScript?

"true" == true и "false" == false. Тогда код (!data) может проверить, что это [true и false]

Ответы [ 8 ]

13 голосов
/ 14 апреля 2011

Я бы просто явно проверил строку "true".

let data = value === "true";

В противном случае вы можете использовать JSON.parse(), чтобы преобразовать ее в собственное значение JavaScript, но это многонакладных расходов, если вы знаете, что вы получите только строки "true" или "false".

9 голосов
/ 29 января 2013

«Если один из операндов является булевым, то булев операнд преобразуется в 1, если он истинный, и в +0, если он ложный». (из MDN Операторы сравнения страница )

Примеры:

true == "true"; //false
true == "1"; //true
false == "false"; //false
false == ""; //true
false == "0"; //true
7 голосов
/ 21 ноября 2016
var data = true;
data === "true" //false
String(data) === "true" //true

Это отлично работает.

4 голосов
/ 14 апреля 2011

Если это просто json "false" / "true", вы можете использовать,

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

Было бы более понятным, если вы ограничите код, чтобы принимать только данные JSON от сервера, и всегда jsonParse или оценивать его как объект JS ( что-то вроде jquery getJSON делает. Он принимает только ответы JSON и анализирует его в перед передачей в функцию обратного вызова ).

Таким образом, вы не только получите логическое значение как логическое от сервера, но также сохранит все другие типы данных, и вы сможете перейти к операторам регулярных выражений, а не к специальным.

Счастливое кодирование.

4 голосов
/ 14 апреля 2011

Попробуйте данные выражения == "true"

Тесты:

data = "false" - значение будет false

date = "true" - значение будет истинным

Также исправьте свой JSON. JSON отлично справляется с логическими значениями.

1 голос
/ 14 апреля 2011

Я думаю, вам нужно посмотреть, как генерируются данные JSON.Вы можете определенно иметь нормальное логическое ложное значение JS в JSON.

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

0 голосов
/ 29 марта 2018
if(data+''=='true'){
    alert('true');
}  

Преобразовать логическое значение в строку, добавив пустую строку. и затем сравните со Stringobject.

0 голосов
/ 14 апреля 2011
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

На самом деле, вам просто нужен первый оператор "if" из функции - тесты, чтобы найти true или false в коде и eval s,превращая его в логическое значение

...