mipfikus
@mipfikus
Вообще я не знаю, но

Как правильнее организовать код калькулятора?

Есть таблица с ценами (HTML), примерно такая:
spoiler
6633caec78249859360709.pngНет конкретного шага как у цены, так и у диаметра. Таблица для примера.

Сейчас у меня код состоит из кучи else if типа "если диаметр от 1 до 49 то цена 30, если диаметр от 50 до 69 то..."
Править такой код очень неудобно, в этих интервалах от-до очень легко запутаться.
Как можно по другому организовать получение цены из таблицы по диаметру?

мой код сейчас:
spoiler
if(PL == 0.000025){
    if (d<18 || d>500){
      cena = 0;
      alert("Укажите диаметр от 18 до 500! Цена для указанного диаметра - договорная");
      m = 0.00;
      clean();
    } else if (d >= 18 && d <= 45) {
      cena = 32;
    } else if (d > 45 && d <= 62){
      cena = 28;
    } else if (d > 62 && d <= 102){
      cena = 30;
    } else if (d > 102 && d <= 132){
      cena = 35;
    } else if (d > 132 && d <= 162){
      cena = 39;
    } else if (d > 162 && d <= 182){
      cena = 50;
    } else if (d > 182 && d <= 202){
      cena = 60;
    } else if (d > 202 && d <= 225){
      cena = 70;
    } else if (d > 225 && d <= 252){
      cena = 85;
    } else if (d > 252 && d <= 270){
      cena = 90;
    } else if (d > 270 && d <= 302){
      cena = 100;
    } else if (d > 302 && d <= 322){
      cena = 112;
    } else if (d > 322 && d <= 352){
      cena = 130;
    } else if (d > 352 && d <= 402){
      cena = 160;
    } else if (d > 402 && d <= 452){
      cena = 180;
    } else if (d > 452 && d <= 500){
      cena = 200;
    }
  }else{
    if (d<18 || d>500){
      cena = 0;
      alert("Укажите диаметр от 18 до 500! Цена для указанного диаметра - договорная");
      m = 0.00;
      clean();
    } else if (d >= 18 && d <= 45) {
      cena = 21;
    } else if (d > 45 && d <= 62){
      cena = 18;
    } else if (d > 62 && d <= 102){
      cena = 20;
    } else if (d > 102 && d <= 132){
      cena = 22;
    } else if (d > 132 && d <= 162){
      cena = 24;
    } else if (d > 162 && d <= 182){
      cena = 30;
    } else if (d > 182 && d <= 202){
      cena = 35;
    } else if (d > 202 && d <= 225){
      cena = 40;
    } else if (d > 225 && d <= 252){
      cena = 50;
    } else if (d > 252 && d <= 270){
      cena = 62;
    } else if (d > 270 && d <= 302){
      cena = 69;
    } else if (d > 302 && d <= 322){
      cena = 77;
    } else if (d > 322 && d <= 352){
      cena = 90;
    } else if (d > 352 && d <= 402){
      cena = 105;
    } else if (d > 402 && d <= 452){
      cena = 112;
    } else if (d > 452 && d <= 500){
      cena = 127;
    }
  }
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
Adamos
@Adamos
const prices = [
  { diameter: 40, brick: 25, concrete: 30 },
  { diameter: 50, brick: 25, concrete: 30 },
  { diameter: 60, brick: 25, concrete: 30 },
];
const realDiameter = 55;
const material = 'brick';
let price = 0;
for(let n = 0; n < prices.length; ++n) {
  if(realDiameter < prices[n].diameter) {
    break;
  }
  price = prices[n][material];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы