Как реализовать сложное условие с использованием циклов?

Всем привет! Раньше я изучал JavaScript, и сейчас мне нужно разработать расширение для браузера, чтобы упростить работу с японскими аукционами. Суть расширения заключается в расчете ставки на автомобиль в японских иенах. У меня есть поле ввода, в которое я вписываю сумму в рублях, и программа должна рассчитать соответствующую ставку в японских йенах. 

Проблема в том, что необходимо одновременно учитывать таможенный сбор, который зависит от рассчитанной ставки, а также от этой ставки зависит наличие дополнительной комиссии. Я пытаюсь решить эту задачу уже четвертый день, пробуя различные условия и циклы, но пока все попытки не увенчались успехом. Чувствую, что не хватает ясности в решении, и уже начинаю переживать из-за этого. 

Пожалуйста, прошу не судить строго за качество кода и название переменных — делаю так, как помню и затеял для собственных нужд. Вот что у меня есть на данный момент: 

Функция для проверки наличия комиссии: 
<pre><code class="javascript">function checkCommision(total) {
            if (total &lt; 1000000) {
                return 0;
            }
            else if (total &gt;= 1000000 &amp;&amp; total &lt; 2000000) {
                return 20000;
            }
            else if (total &gt;= 2000000 &amp;&amp; total &lt; 3000000) {
                return 30000;
            }
            else if (total &gt;= 3000000 &amp;&amp; total &lt; 4000000) {
                return 50000;
            }
            else if (total &gt;= 4000000 &amp;&amp; total &lt; 5000000) {
                return 90000;
            }
            else if (total &gt; 5000000) {
                return 10 / 100;
            }
        }</code></pre>

Функция для проверки таможенного сбора: 
<pre><code class="javascript">function checkSbor(JpRashodi) {
            if (JpRash...
  • 16 января 2025 г. 10:34
Ответы на вопрос 1
Давайте попробуем упростить вашу задачу по расчету ставки. Мы создадим одну основную функцию, которая будет обрабатывать ввод пользователя, проверять наличие комиссии и таможенных сборов, а затем выводить конечную ставку в японских йенах. Я также добавлю некоторые улучшения и комментарии к коду, чтобы вам было легче понять его структуру.

Предположим, что у вас есть некоторые константы для обменного курса и правил расчета таможенного сбора. Разделим код на логические блоки:

1. Конвертация рублей в йены.
2. Расчет комиссии.
3. Расчет таможенного сбора.
4. Подсчет окончательной ставки.

Вот пример, как это можно реализовать:

```javascript
const exchangeRate = 1.5; // примерный курс 1 рубль = 1.5 иены

// Функция для проверки наличия комиссии
function checkCommission(total) {
    if (total < 1000000) {
        return 0;
    } else if (total >= 1000000 && total < 2000000) {
        return 20000;
    } else if (total >= 2000000 && total < 3000000) {
        return 30000;
    } else if (total >= 3000000 && total < 4000000) {
        return 50000;
    } else if (total >= 4000000 && total < 5000000) {
        return 90000;
    } else if (total >= 5000000) {
        return total * 0.10; // 10% от суммы свыше 5000000
    }
}

// Функция для расчета таможенного сбора
function checkCustomsFee(jpCost) {
    if (jpCost <= 300000) {
        return 0;
    } else {
        return jpCost * 0.05; // например, 5% от суммы свыше 300000
    }
}

// Основная функция
function calculateBid(rubAmount) {
    // 1. Конвертируем рубли в японские иены
    let jpBid = rubAmount * exchangeRate;
    
    // 2. Проверяем наличие комиссии
    let commission = checkCommission(jpBid);
    
    // 3. Подсчитываем итоговую сумму с учетом комиссии
    jpBid += commission;
    
    // 4. Проверяем наличие таможенного сбора
    let customsFee = checkCustomsFee(jpBid);
    
    // 5. Подсчитываем окончательную ставку
    let finalBid = jpBid + customsFee;

    // Возвращаем результат
    return {
        jpBid: jpBid,
        commission: commission,
        customsFee: customsFee,
        finalBid: finalBid
    };
}

// Пример использования
let rubAmount = 1500000; // Вводим сумму в рублях
let result = calculateBid(rubAmount);
console.log(result);
```

### Пояснения к коду:
- `exchangeRate`: здесь можно установить актуальный обменный курс.
- Функции `checkCommission` и `checkCustomsFee` рассчитывают комиссии и таможенные сборы в зависимости от суммы.
- Функция `calculateBid` выполняет основные шаги: конвертирует рубли, проверяет комиссии и таможенные сборы, а затем возвращает все расчетные значения в объекте.

### Вывод
Запустив эту функцию с определенной суммой в рублях, вы получите информацию о ставке в йенах, сумме комиссии, таможенном сборе и конечной ставке. Надеюсь, это поможет вам разобраться с задачей и избежать дальнейших переживаний! Если есть дополнительные вопросы, не стесняйтесь задавать их!
Похожие вопросы