Выбор совпадающего значения из массива в JS

#javascript

#javascript

Вопрос:

Я изучаю выпадающий список в JS.

Этот JS работал так хорошо, но я обнаружил, что некоторые вычисления не работают. итак, я добавляю код и пытаюсь исправить.

Движение программы таково… Пользователь выбирает 3 выпадающих списка, затем отображает результат. Сначала пользователь выберет ’30’ или ’40’ или ’50’. После этого выберите «тип», наконец, пользователь может выбрать «продукт». Списки продуктов уже определены «1-м и 2-м выбранным значением».

Эта программа отлично работает только тогда, когда пользователь выбрал значение ’30’

Я хотел бы добавить РЕГИСТР вычисления ’40’ и ’50’.

Например

Если пользователь выбирает

 tubosuValue == 30 amp;amp; u_typeValue == 'M' amp;amp; productData == 920
  

результат будет 920

если пользователь выбирает

 tubosuValue == 50 amp;amp; u_typeValue == 'S' amp;amp; productData == 1593
  

результатом будет 1593

Я поместил здесь весь код

Я написал код ниже, но он выглядит некрасиво. Я не мог найти хороший способ.

Не могли бы вы научить меня правильному коду, пожалуйста?

Часть JS

 let result = document.getElementById("result");
if (tubosuValue amp;amp; u_typeValue amp;amp; productValue) {
    //if all value selected

    if(tubosuValue == 30 amp;amp; u_typeValue == 'M' amp;amp; productValue == 920) {
    hoge = 920;
    }
    if(tubosuValue == 30 amp;amp; u_typeValue == 'M' amp;amp; productValue == 1117) {
    hoge = 1117;
    }
    if(tubosuValue == 30 amp;amp; u_typeValue == 'M' amp;amp; productValue == 1180) {
    hoge = 1180;
    }
    if(tubosuValue == 40 amp;amp; u_typeValue == 'M' amp;amp; productValue == 1182) {
    hoge = 1182;
    if(tubosuValue == 50 amp;amp; u_typeValue == 'S' amp;amp; productValue == 1593) {
    hoge = 1485;

    }

    result.value = ValueUtils.comma(hoge);
  

Обновить
Я пытаюсь написать вопрос просто

Я переписываю так просто, вот моя цель

Первый пользователь выбирает значение 30 или 40 или 50 (зеленая область)

Второй пользователь выбирает M, S, K, AL (синяя область)

Наконец, пользователь выбирает красную область.

Если пользователь выбирает 40 и K , пользователь может выбрать только значения p1 и p2.

если пользователь выберет 40 и k и p1, результат будет 21

Если пользователь выберет 40 и K и p2, результат будет 22

[![введите описание изображения здесь][1]][1]

Ответ №1:

Это все еще не «лучшее» решение, потому что я действительно не знаю, чего вы пытаетесь достичь и как это можно сделать лучше, но это лучше, чем 100 операторов if.

 const tubosuValueArray = [30,40,50];
const productValueArray = [920, 1117, 1180, 1182];
const typeValue = 'M';
if (tubosuValueArray.includes(tubosuValue) amp;amp; 
    typeValue === u_typeValue) amp;amp; productValueArray.includes(productValue)) {
  hoge = productValue
} else if (tubosuValue == 50 amp;amp; u_typeValue == 'S' amp;amp; productValue == 1593) {
  hoge = 1485
}  

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

1. Спасибо за ответ. Я скоро перепишу свой вопрос. Не могли бы вы взглянуть на это еще раз, пожалуйста?

2. Я исправил свой ответ, я пропустил проверку значения продукта

3. Я уточняю свой вопрос. Я старался писать как можно проще. Не могли бы вы взглянуть на него, пожалуйста?

4. Спасибо, что помогли мне. Я многому научился из вашего ответа, но я хотел бы использовать свой текущий код, поэтому я думаю, что я уберу свой вопрос и перепишу этот вопрос. Еще раз большое вам спасибо.