ЕСЛИ, ИЛИ и И, и разные результаты JavaScript - PullRequest
2 голосов
/ 12 марта 2020

Я должен решить эту проблему:

Напишите функцию, которая добавляет две суммы с доплатой. За каждую сумму, меньшую или равную 10, доплата равна 1. Для каждой суммы больше 10 доплата равна 2. Вызов (5, 15) должен вернуть 23.

Итак, я отобразил это решение:

const addWithSurcharge = (a, b) => ((a <= 10) || (b <= 10) || Math.min(a + b, 20)) ? ((++a)) + ((++b)) : (2+a) + (2+b);

Все идет гладко, пока функция не примет (11, 10) в качестве параметров. Если я использую ИЛИ дает мне 23, если я использую И дает мне в результате 25, но не желаемый 24. Я делаю что-то не так? Кажется, я передаю только добавление к одному из параметров. Я нахожусь в моем способе обучения, поэтому любая помощь будет признательна.

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Вы можете обработать каждое значение, проверить его и добавить надбавку.

const 
    surcharge = v => v <= 10 ? 1 : 2,
    addWithSurcharge = (a, b) => a + surcharge(a) + b + surcharge(b);
0 голосов
/ 12 марта 2020

И если, если, если и еще. Работает как шарм. Спасибо Нина Шолк

const
   surchage = v => v <= 10 ? 1 : v <= 20 ? 2 : 3,
    addWithSurcharge = (a, b) => a + surchage1(a) + b + surchage1(b);


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...