Как проверить массив на наличие нескольких значений в Javascript (не используйте слишком много операторов "или") - PullRequest
2 голосов
/ 08 октября 2019

У меня есть 2 выпадающих списка. Список выбора A имеет 10 значений (int). Если определенный выбор сделан иначе: определенное значение, то я хочу выбрать список B, который будет скрыт. Прямо сейчас у меня есть скрывающая функция, если я использую несколько «||»или заявления, но это грязно и нет хорошей практики. Как проверить, выбрано ли определенное значение без использования набора или операторов?

Текущий код (работает, но уродливо):

$('#status').change(function(){
            let $appStatus = $('#status').val();

        if($appStatus == 400 || $appStatus == 606 || $appStatus == 620 || $appStatus == 700 || $appStatus == 1000 || $appStatus == 1020){
          console.log(true);
          $reasonNoHire.hide()
        }else{
          console.log(false);
          $reasonNoHire.show();
        }
      });

Другой код, который я пробовал, всегда возвращает false

            //Brought back depending on what the user chooses in Selectlist A
            let $appStatus = $('#status').val();
            let valArray = [400, 606, 620, 700, 1000, 1020];

            if(valArray.includes($appStatus)){
              console.log(true);
              $reasonNoHire.hide()
            }else{
              console.log(false);
              $reasonNoHire.show();
            }
          });

Ответы [ 2 ]

3 голосов
/ 08 октября 2019

Проблема в том, что $appStatus это строка, а не число. Это происходит в вашем первом примере, потому что вы используете == вместо ===. Array.prototype.includes возвращает false, потому что [400].includes('400') сравнивает строку с числом.

1 голос
/ 08 октября 2019

$('#status').val() возвращает строку, но вы сравниваете ее с числами. Вы используете Свободное равенство в первом фрагменте. Итак, это работает. Но includes использует для сравнения алгоритм Одинаковое значение-ноль (почти равно Строгое равенство ). Поэтому перед проверкой includes

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