Почему мой forl oop проходит через мой if только один раз? - PullRequest
0 голосов
/ 15 марта 2020

Я пишу калькулятор в JS, и в настоящее время я пишу функцию '=', теперь я вставил свой код ниже, поэтому я сделал exp = 5 + 5, все работает отлично, он говорит мне, что всего 10, теперь, когда я делаю 5 + 5 + 5, он по-прежнему говорит 10, как будто l oop ins не работает, потому что я хочу, чтобы сначала было 5 + 5, обновите итоговое значение до 10, а затем найдите + оператор снова, а затем добавить все, что после плюса, как мне это сделать? Я понятия не имею, почему l oop не работает

Вся помощь приветствуется,

Хорошего дня, larwa

function equal(){

  var exp = document.form.textview.value;
  var expArray = exp.split(/\b/);
  console.log(expArray);
  let total = 0;
    for (let i = 0 ; i < expArray.length; i++){
      console.log(expArray[0])
      total = parseFloat(expArray[0])
      if(i = '+' || '-' || '/' || '*'){
      console.log(i);
      n = expArray.indexOf(i)
      total += parseFloat(expArray[n + 1]);
    }
   }

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

В вашем коде есть определенные ошибки.

total следует инициализировать за пределами for l oop, в противном случае будет сгенерировано неверное общее значение.

if(i = '+' || '-' || '/' || '*'){, вместо этого следует использовать assignment operator i: e =, comparison operator i: e == или === (оператор строгого равенства). Также требуются отдельные выражения сравнения i: e i=== '+' || i=== '-' || i=== '/' || i=== '*'. i - это не что иное, как индекс элементов массива, вместо i это должен быть элемент массива. я: е expArray[i].

let exp = "5 + 5 + 5";

function equal() {
  var expArray = exp.split(/\b/);
  let total = parseFloat(expArray[0]);
  for (let i = 0; i < expArray.length; i++) {
    const dig = expArray[i].trim();
    if (dig === '+' || dig === '-' || dig === '/' || dig === '*') {
      total += parseFloat(expArray[i + 1]);
    }
  }
  return total;
}

console.log(equal());
0 голосов
/ 15 марта 2020

Попробуйте это

    for (let i = 0 ; i < expArray.length; i++){
      console.log(expArray[0])
      total = parseFloat(expArray[0])
      if(i == '+' || '-' || '/' || '*'){
      console.log(i);
      n = expArray.indexOf(i)
      total += parseFloat(expArray[n + 1]);
    }

Оператор = используется для присвоения значений переменной, однако оператор == используется для сравнения двух переменных независимо от типа переменной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...