Как реализовать функцию, высчитывающую проценты js через разбиение массива по множественным разделителям
function calc_percent(){
let arr = input.value;
let first_num = arr.split(/_(.+|-|*|/)/)[0];// цифры, введенные до одного из разделителей (+, -, *, /)
let second_num = arr.split(/_(.+)/)[1];//цифры, введенные после любого активного разделителя(например -)
let percent = first_num/100*second_num;// процент
input.value = percent;// вывод данных по нажатию на кнопку % <button type = "button" class = "second_row" onclick = "calc_percent()">%</button>
}
Как сделать, чтоб первое число формировалось до любого из указанных разделителей и второе число после этого разделителя? И как найти процент, например, 100 - 10% или 100 + 10%? Выше есть код, но там проблемы с регулярными выражениями... В общем, это попытка создать калькулятор... в один инпут должно вводится число. например 100, потом от него должны отниматься желаемые проценты, например 10 и по нажатию на кнопку % должно произойти вычисление этих процентов и вывод их в тот же инпут, как результат. то есть, мы принимаем в этом инпуте массив с числами, разделенными некоторыми знаками. например 100-10%, так вот, надо как-то разделить этот массив на два числа и совершить с ними операцию по вычислениею процентов. не судите строго, я только начинаю изучать js...
Ответы (1 шт):
Можно использовать регулярное выражение, в котором создать три группы в скобках: для числа, для знака и для количества процентов. Затем использовать условное ветвление в зависимости от знака. (Я не добавлял проверки на правильность входных данных).
function calc_percent(){
const str = input.value;
let result;
let [, num, operator, percent] =
str.match(/(\d+)\s*([-+*/])\s*(\d+)%/) ?? [];
num = Number(num);
percent = num / 100 * percent;
if (operator === '-') result = num - percent;
else if (operator === '+') result = num + percent;
else if (operator === '*') result = num * percent;
else if (operator === '/') result = num / percent;
else result = 'Неправильный формат.';
input.value = result;
}
<input id='input'>
<button type = "button" class = "second_row" onclick = "calc_percent()">%</button>