Как сравнить 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.