У меня был калькулятор Project.I может умножить, сложить, разделить и вычесть все числа на входе и получить результат как результат.Но мне нужна помощь. Каково решение, когда пользователь в том же вводе хочет сначала вычесть, а затем разделить, затем умножить, и т. Д. В этом случае.
Небольшое объяснение: у меня есть кнопки с atribbutes и ядобавлен прослушиватель событий, когда на них нажимают, их нужно показать на экране.После этого я помещаю их в массив и затем завися от искусственной операции, , /, +, - я выполняю поиск с помощью reg ex, а после этого я удаляю их и делаю операцию a b, a + bи т. д. в зависимости от того, что включает в себя массив, когда = EQUAL BTN нажата.Может включать *, /, +, - но в этом случае только один из этих арифметических операторов.
const btns = document.querySelectorAll(".btn");
const screen = document.querySelector(".screen");
const equalBtn = document.querySelector(".btn-equal")
const clearBtn = document.querySelector(".btn-clear")
let get = []
for (let i = 0; i < btns.length; i++) {
btns[i].addEventListener("click", function() {
let number = btns[i].getAttribute("data-num");
screen.value += number;
get.push(number);
console.log(get);
})
}
equalBtn.addEventListener("click", function() {
if (get.includes("*")) {
const res = get.toString()
.match(/[^*]+/g)
.map(v => v.split(',')
.filter(v => v)
.map(v => +v))
var Multiply = res.map(function(el) {
return el.join('');
}).reduce(function(a, b) {
return a * b;
});
screen.value = Multiply;
}
if (get.includes("/")) {
const res = get.toString()
.match(/[^/]+/g)
.map(v => v.split(',')
.filter(v => v)
.map(v => +v))
var Divide = res.map(function(el) {
return el.join('');
}).reduce(function(a, b) {
return a / b;
});
screen.value = Divide;
}
if (get.includes("+")) {
const res = get.toString()
.match(/[^+]+/g)
.map(v => v.split(',')
.filter(v => v)
.map(v => +v))
var Adding = res.map(function(el) {
return el.join('');
}).reduce(function(a, b) {
return parseInt(a) + parseInt(b);
});
screen.value = Adding;
}
if (get.includes("-")) {
const res = get.toString()
.match(/[^-]+/g)
.map(v => v.split(',')
.filter(v => v)
.map(v => +v))
var Substracting = res.map(function(el) {
return el.join('');
}).reduce(function(a, b) {
return a - b;
});
screen.value = Substracting;
}
});
clearBtn.addEventListener("click", function() {
get.length = 0;
screen.value = "";
});