Как я могу смешать все арифметические операторы, чтобы закончить свой калькулятор - PullRequest
0 голосов
/ 20 декабря 2018

У меня был калькулятор 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 = "";
});
...