@Melagomania

Как работает Math.max с операторами >= и &&?

Добрый день! Есть задачка:
Наш рюкзак имеет ограничение в грузоподъемности (maxW). Мы нашли два предмета, каждый имеет характеристики: вес, стоимость (weight1, value1 и weight2, value2) . Функция должна вернуть максимальное кол-во денег, которое мы сможем "унести".
Например, предмет1: 5кг, 100руб, предмет2: 7кг 123руб, ограничение по весу 6кг. Ответ: 100руб, потому что поместится только первый предмет.

У меня есть рабочий код, но я не понимаю, как и почему он работает. Почему Math.max возвращает именно значение value?
function knapsackLight(value1, weight1, value2, weight2, maxW) {
    return Math.max(
        maxW >= weight1 && value1, //как работают эти строки?
        maxW >= weight2 && value2,
        maxW >= weight1 + weight2 && value1 + value2
    );
}
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Логическое И (&&)
expr1 && expr2
Возвращает значение expr1, если оно может быть преобразовано в false; иначе возвращает значение expr2.

В данном примере используется особенность работы логического И в JS, если значение первого аргумента true (или приводится к true), то результатом операции будет значение второго аргумента без преобразования.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@GreatRash
За такой код программисту надо яйца отрывать.
Ответ написан
Ваш ответ на вопрос

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

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