Я пытаюсь получить 3 условия в одном if . Но это не работает

#javascript

#javascript

Вопрос:

Мне нужно сопоставить три условия, чтобы страница могла отображать соответствующий результат для этих фильтров. Я попытался добавить amp;amp; между тремя условиями, но это не сработало. Я не раскрываю здесь реальный код, но я показал его без оригинальных имен переменных.

 if(localStorage.getItem("eg1") == 30000 amp;amp;  eg2 == 1 amp;amp;   eg3 == use){};
 

eg2 и eg3 — это просто переменные, они не являются localstorage.

Комментарии:

1. Не eg2 == 1 должно быть ocalStorage.getItem("eg2") == 1 ? И я подозреваю, что то же самое для eg3 .

2. Пожалуйста, проверьте localStorage.getItem("eg1") , действительно ли что-то возвращается.

3. @VLAZ Извините, я не понял

4. Консоль ваших локальных элементов хранения и их типов. Обычно все они будут сохранены в виде строки, если используются в необработанном виде, поэтому у вас будет сравнение между строкой и числами, т.Е. «30000» == 30000

5. @Beshamberchaukhwan проверка типа отсутствует, 3000 == ‘3000’ допустимо. проверка типов потребует ===

Ответ №1:

Это должно быть:

 if((localStorage.getItem("eg1") == 30000) amp;amp; (eg2 == 1) amp;amp;   
(eg3== use)){};
 

Комментарии:

1. Все они не являются локальным хранилищем. Только первое, а все остальные являются переменными

2. О, вы проверили, все ли переменные дают значение, используя журнал консоли перед условием?

3.Попробуйте это и проверьте, поступает ли вывод в режиме разработчика console.log(localStorage.getItem("eg1") ); console.log(eg2); console.log(eg3 );

4. Все переменные и локальное хранилище также работают, я проверил, также есть ли какие-либо проблемы с моим кодом. If работал, когда у меня было только условие локального хранилища. но когда я ввел другие условия с переменными, if не показал никаких результатов

5. @VishalPillai Попробуйте добавить скобки для разделения 3 условий, как указано выше, это сработает.

Ответ №2:

Вот немного более чистый способ сделать это:

 const a = ["eg1", "eg2", "eg3"].map(e => localStorage.getItem(e));

if (a[0] == 30000 amp;amp; a[1] == 1 amp;amp; a[2] == use) {
  //
}
 

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

 if ([30000, 1, use].map((e, i) => e == localStorage.getItem("eg"   i  )).includes(false)) {

}
 

Комментарии:

1. Извините, я не понимаю ваш код. Я не продвинутый автор javascript. Я начал только в прошлом году.

Ответ №3:

Попробуйте разложить проблему, чтобы лучше ее проанализировать:

 var e1 = localStorage.getItem("eg1") === 30000;
var e2 = eg2 === 1;
var e3 = eg3 === use;
 

Я использовал triple equal, поскольку, полагаю, вы не хотите принуждения к типу.

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

Уверен, что независимое рассмотрение ваших условий должно помочь вам определить, куда попадают ваши догадки, чтобы исправить то, что выглядит как простое условие ветвления.

Комментарии:

1. Это не идея, вы здесь, потому что не можете понять, как заставить работать простые 3 условия, если оператор сокращен. Я просто пытаюсь, не имея доступа к вашей информации, помочь вам раз рассуждать о вашей проблеме. Пожалуйста

2. Извините, я не хотел быть грубым. Я боялся, что кто-нибудь поймет идею моего сайта из кода.

3. Я не говорил вам не копировать мою идею. Я сказал, что в целом

Ответ №4:

localStorage.getItem возвращает значение в виде строки.

Попробуйте использовать if(localStorage.getItem("eg1") == "30000" amp;amp; eg2 == 1 amp;amp; eg3 == use){};