С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 26

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

16.01.2025, 13:20. Показов 622. Ответов 4
Метки js (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Когда то давно изучал JS и сейчас потребовалось написать расширение для браузера, для упрощения работы с японскими аукционами. Суть расширения это расчет ставки на авто в японских иенах. Есть инпут, в который я вводу сумму в рублях, и программа должна рассчитать под этот бюджет ставку в японских йенах. Уже четвертый день и так и сяк пытаюсь, но все не так, как нужно. Сложность в чем, одновременно нужно высчитывать таможенный сбор, который зависит напрямую от высчитываемой ставки. Так же от ставки зависит будет ли комиссия дополнительная. Уже четвертый день мучаюсь, перепробовал кучу условий, циклов, но все неправильно. Уже глаз дергаться начался)) Прошу не ругаться и не кидаться камнями за плохой код и названия переменных, делаю так как помню и для себя. Вот что есть:
Функция проверки на комиссию:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function checkCommision(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 10 / 100;
            }
        }
Функция проверки на таможенный сбор:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function checkSbor(JpRashodi) {
            if (JpRashodi < 200000) {
                return 1067;
            }
            else if (JpRashodi >= 200000 && JpRashodi < 450000) {
                return 2134;
            }
            else if (JpRashodi >= 450000 && JpRashodi < 1200000) {
                return 4269;
            }
            else if (JpRashodi >= 1200000 && JpRashodi < 2700000) {
                return 11746;
            }
            else if (JpRashodi >= 2700000 && JpRashodi < 4200000) {
                return 16524;
            }
            else if (JpRashodi >= 4200000 && JpRashodi < 5500000) {
                return 21344;
            }
            else if (JpRashodi >= 5500000 && JpRashodi < 7000000) {
                return 27540;
            }
            else if (JpRashodi > 7000000) {
                return 30000;
            }
        }
И мой код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
var jpy = 0.6721; // курс японской йены к рублю (1 рубль=0.6721 йены)
var RusSum_prohodnoy;  // сумма расходов по РФ в рублях
        var jpSum_Rashodi; // Сумма расходов по Японии 
        var totalJp_prohodnoy; // рассчитываемая ставка в йенах
 
editMaxCash.addEventListener("blur", () => { 
            RusSum_prohodnoy = customCoast_prohodnoy + 5200 + 4000 + 4000 + 9000 + 10000; // расходы по РФ без сбора 
            
            jpSum_Rashodi = (Number(priceFOB) + Number(svhLab) + Number(shipping)) * jpy; // Расходы по Японии без аукционной цены и комиссии в рублях
            totalJp_prohodnoy = (Number(editMaxCash.value) - RusSum_prohodnoy - jpSum_Rashodi) / jpy; // Расчет ставки
 
            Total_old.textContent = `Ставка для проходного: ${Math.floor(totalJp_prohodnoy)}`;
        });
Пните пожалуйста в нужную сторону. То есть по факту мне нужно постоянно вычислять одновременно два значения это сбор таможенный и коммисию японскую. То есть таможенный сбор зависит от стоимости по Японии и рассчитывается так:
JavaScript
1
(jpSum_Rashodi + totalJp_prohodnoy) * jpy;
А комиссия рассчитывается от уже высчитанной ставки. И все время нужно проверять чтобы ставка была по бюджету, который вводится в инпут и чтобы корректно высчитывался сбор и комиссия. Как мне это реализовать все правильно? Пытался циклами и условиями, но все не то, не хватает мозгов додуматься.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.01.2025, 13:20
Ответы с готовыми решениями:

Сложное условие
есть таблица с координатами для гугловских карт. надо выбрать те толки которые находятся в определённом радиусе от заданной точки! ...

Сложное условие
помогите доделать, а то что то не работает procedure TForm1.Timer1Timer(Sender: TObject); begin If (edit1.text='') and...

Сложное условие в автофильтре
Как с помощью Автофильтра задать 2-сторонее условие типа A &lt;=Поле &lt;=B В Excel 2007 в списке числовые фильтры я вынужден тупо ставить или...

4
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3817 / 1655 / 428
Регистрация: 14.03.2022
Сообщений: 4,131
16.01.2025, 14:35
Цитата Сообщение от Roman_Igorevich Посмотреть сообщение
Функция проверки на комиссию:
Аналог...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const checkCommision = getCommision()
//
function getCommision() {
    const arr = [
        [1000000, 0],
        [2000000, 20000],
        [3000000, 30000],
        [4000000, 50000],
        [5000000, 90000],
    ]
    return function (total) {
        const a = arr.find(a => total < a[0])
        return a ? a[1] : 10 / 100;
    }
}
Добавлено через 5 минут
Цитата Сообщение от Roman_Igorevich Посмотреть сообщение
Функция проверки на таможенный сбор
Аналог...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const checkSbor = getSbor()
//
function getSbor() {
    const arr = [
        [200000, 1067],
        [450000, 2134],
        [1200000, 4269],
        [2700000, 11746],
        [4200000, 16524],
        [5500000, 21344],
        [7000000, 27540],
    ]
    return function (JpRashodi) {
        const a = arr.find(a => JpRashodi < a[0])
        return a ? a[1] : 30000;
    }
}
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 26
16.01.2025, 15:34  [ТС]
Честно говоря, я даже не понимаю толком, что происходим в вашем коде)) Но и проблему это не решает. Я так понимаю нужен цикл и в цикле как то проверять все.
0
 Аватар для voraa
1244 / 1145 / 178
Регистрация: 21.01.2024
Сообщений: 5,264
16.01.2025, 16:02
Цитата Сообщение от Roman_Igorevich Посмотреть сообщение
Я так понимаю нужен цикл
Но что бы написать его, нужен алгоритм (хотя бы формулы) по которым все это вычисляется.
Но кто тут, кроме вас, его знает?
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 26
17.01.2025, 11:22  [ТС]
Не актуально, разобрался!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2025, 11:22
Помогаю со студенческими работами здесь

Сложное условие уникальности
Есть таблица, которая связывает три сущности: Компания(id1), Человек(id2), Телефон(id3, not null) Телефон может быть личным: id1=null ...

Сложное условие в запросе
Доброго времени суток!!! Требуется Ваша помощь. есть Форма Назначение для которой выбирается значение ФИО, Статус и Код. В поле...

Сложное условие в цикле
возможно ли так задать условие в цикле for (int j = 0; (j &gt;3 &amp;&amp; j&lt;12); j++) ? весть код: #include &quot;stdafx.h&quot; #include...

Сложное условие цикла
Всем добрый вечер! Есть txt файл, внутри которого столбец чисел(которые, кстати, могут быть и с плавающей точкой). Нужно сделать так,...

Сложное логическое условие
Добрый день! Подскажите как проверить логическое выражение import numpy as np import pandas as pd df =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru