@miadiva

Как правильно записать условия для калькулятора на js: else if?

Здравствуйте! Подскажите, пожалуйста, как правильно составить алгоритм для условий калькулятора.
Скажем есть помещение 30 * 4.5 * 10 и есть форма для заполнения полей длины, ширины и высоты какого-то предмета.
Нужно проверить значения из вышеуказанных полей. Они не должны превышать размеров помещения. Как их проверить, если пользователи могут ввести габариты предмета в любом порядке в любое поле?

У меня получилось такое условие:
Если хотя бы 1 значение больше 30, то вывести сообщение, иначе
--- если 2 из значений больше 10, то вывести сообщение, иначе
------- если хотя бы одно из оставшихся значений больше 4.5, то вывести сообщение, иначе
------------- выполнить функцию.

var length,
  width,
  height,
  sum,                
  message = 'Габариты предмета превышают размеры помещения';
if (length > 30 || width > 30 || height > 30) {
  alert( message );
}
else if ((length > 10 && width > 10) || (height > 10 && width > 10) || (length > 10 && height > 10)) {
  alert( message );
}
else if (length > 4.5 && width > 4.5 && height > 4.5) {
  alert( message );
}
else  {
  sum = length * width * height
}

Вообще такой код валидный или нет?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Чё-то как-то сложно у вас. Почему бы не поступить следующим образом: сложить значения в два массива - размеры помещения и размеры предмета, отсортировать массивы и просто проверять, чтобы никакой элемент первого массива не был меньше соответствующего ему элемента из второго? Как-то так:

const
  roomSizes = [ 30, 4.5, 10 ].sort((a, b) => b - a),
  thingSizes = [ length, height, width ].sort((a, b) => b - a);

if (roomSizes.some((n, i) => n < thingSizes[i])) {
  alert('всё плохо');
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Кладем значения в массив, сортируем по значению от большего к меньшему, проверяем первое на >30, второе на > 10 и третье на > 4.5
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы