Я пытаюсь сравнить две строки, используя приведенный ниже код
var roomStatus = $("#room-status").val().trim();
var inService = "In Service";
var caInService = "CA In Service";
if (roomStatus !== inService || roomStatus !== caInService)
{
swal({
title: "Allotment Cancelled",
type: "error",
text: "The Student cannot be alloted to this Room because this room is "+roomStatus,
});
return false;
}
Приведенный выше код не сравнивается, если roomStatus равно In Service. Он всегда попадает в состояние if. Пожалуйста помоги !!!
да, это загрузка, я отлаживаю код
Это потому, что вы используете условие ИЛИ. Вам нужно перевернуть вашу логику.
Обратитесь по этой ссылке stackoverflow.com/questions/359494/…
на самом деле я проверяю, указано ли в статусе номера «Не работает» или «Не работает», тогда это должно вызвать проблему
попробуйте этот var roomStatus = $ ("# room-status"). val (). trim (). toString ();
в этом коде, независимо от того, что у вас есть в вашем рум-сервисе, оно будет истинным ... Если это одно, то не другое, если это другое, то не одно. что бы вы ни писали, это либо не будет inService, либо не будет caInService - ваша логика ошибочна
В чем именно ценность roomStatus? Этот комментарий кажется очень мутит воду
Логическое объяснение: вы проверяете, НЕ ли это и яблоко, ИЛИ это НЕ груша - все в мире попадает в эту логику. - даже груши и яблоки



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


замените эту строку:
if (roomStatus !== inService || roomStatus !== caInService) {
с участием
if (!(roomStatus === inService || roomStatus === caInService)) {
как предлагают комментаторы, эту строку будет намного легче читать:
if (roomStatus !== inService && roomStatus !== caInService) {
if (roomStatus !== inService && roomStatus !== caInService) лучше, я думаю ... (но это личное мнение, ничего объективного)
@ Жан-Марк Циммер прав. Я тоже не думаю, что это личные предпочтения, логика в этом ответе просто сбивает с толку
В алгоритме есть две группы условий, которые не имеют смысла (с if (true) и if (false)):
if (var !== val1 || var !== val2)
всегда будет оцениваться как true: если var равен val1, он не равен val2, и наоборот.
if (var === val1 && var === val2)
всегда будет иметь значение false, потому что var не может иметь два значения одновременно.
note: Here I consider
val1 !== val2and simple conditions with no affectation
Вы проверили, что возвращает roomStatus и его тип? Также похоже, что вы хотите проверить, совпадает ли какая-либо из обеих строк, чтобы привлечь внимание.