! == не сравнивать строки

Я пытаюсь сравнить две строки, используя приведенный ниже код

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. Пожалуйста помоги !!!

Вы проверили, что возвращает roomStatus и его тип? Также похоже, что вы хотите проверить, совпадает ли какая-либо из обеих строк, чтобы привлечь внимание.

Dez 14.11.2018 12:08

да, это загрузка, я отлаживаю код

Nisa Nisa 14.11.2018 12:09

Это потому, что вы используете условие ИЛИ. Вам нужно перевернуть вашу логику.

Rory McCrossan 14.11.2018 12:11

Обратитесь по этой ссылке stackoverflow.com/questions/359494/…

Mukesh Kalgude 14.11.2018 12:11

на самом деле я проверяю, указано ли в статусе номера «Не работает» или «Не работает», тогда это должно вызвать проблему

Nisa Nisa 14.11.2018 12:12

попробуйте этот var roomStatus = $ ("# room-status"). val (). trim (). toString ();

Mukesh Kalgude 14.11.2018 12:16

в этом коде, независимо от того, что у вас есть в вашем рум-сервисе, оно будет истинным ... Если это одно, то не другое, если это другое, то не одно. что бы вы ни писали, это либо не будет inService, либо не будет caInService - ваша логика ошибочна

Stender 14.11.2018 12:21

В чем именно ценность roomStatus? Этот комментарий кажется очень мутит воду

Liam 14.11.2018 12:21

Логическое объяснение: вы проверяете, НЕ ли это и яблоко, ИЛИ это НЕ груша - все в мире попадает в эту логику. - даже груши и яблоки

Stender 14.11.2018 12:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
9
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

замените эту строку:

if (roomStatus !== inService || roomStatus !== caInService) {

с участием

if (!(roomStatus === inService || roomStatus === caInService)) {

Редактировать

как предлагают комментаторы, эту строку будет намного легче читать:

if (roomStatus !== inService && roomStatus !== caInService) {
if (roomStatus !== inService && roomStatus !== caInService) лучше, я думаю ... (но это личное мнение, ничего объективного)
Jean-Marc Zimmer 14.11.2018 12:16

@ Жан-Марк Циммер прав. Я тоже не думаю, что это личные предпочтения, логика в этом ответе просто сбивает с толку

Liam 14.11.2018 12:19
Ответ принят как подходящий

В алгоритме есть две группы условий, которые не имеют смысла (с 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 !== val2 and simple conditions with no affectation

Другие вопросы по теме