Как сравнить string и boolean в Javascript?

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

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

Итак, как я могу разобрать bool из String в JavaScript, затем?

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

Ответ 1

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

let data = value === "true";

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

Ответ 2

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

Примеры:

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

Ответ 3

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

Это прекрасно работает.

Ответ 4

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

Тесты:

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

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

Также исправьте JSON. JSON может обрабатывать булевы просто отлично.

Ответ 5

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

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

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

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

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

Ответ 6

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

{ "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" из функции - тесты, чтобы найти true или false в коде и eval, и превратить его в логическое значение

Ответ 8

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

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