как делать арифметические операции с цепью?

У меня есть следующие цепи:

let str1 = "5 - 3 + 2 * 5"; // str1 = 20
let str2 = "123 / 3 + 4 * 0.5 - 55 + 1"; // str2 = -31,5

операторы, числа и количество чисел могут меняться.

Я нуждаюсь в том, чтобы сделать арифметические операции на ней с операторами, которые появляются у него между каждым числом и с левой стороны до правой стороны.

До настоящего времени я попробовал следующее:

let arr1 = str1.split(' ');
let arr2 = str2.split(' ');

*arr1 = ["123", "/", "3", "+", "4", "*", "0.5", "-", "55", "+", "1"]*

*arr2 = ["5", "-", "3", "+", "2", "X", "5"]*

let tot = 0;
let _num = 0;
arr.forEach((e) => {
        if (tot==0) { 
            tot = Number(e);
        } else {
            if (e == '+' || e == '-' || e == 'X' || e == '/') {
                let sig = e;
            } else {
                _num = Number(e);
                if (sig=='+') {
                    tot += _num
                } else if (sig=='-') {
                    tot -= _num
                } else if (sig=='X') {
                    tot *= _num
                } else if (sig=='/') {
                    tot /= _num
                }
            };
        }
});

со следующим результатом

для arr1, общее количество - tot = 150

для arr2, общее количество - tot = 186,5

потому что он делает операции с последним оператором в договоренности.

Когда результат должен бы быть следующим:

*arr1 = ["123", "/", "3", "+", "4", "*", "0.5", "-", "55", "+", "1"]*

127 / 3   = 41
41 + 4    = 45
45 * 0,5  = 22,5
22,5 - 55 = -32,5
-32,5 + 1 = -31,5

tot =-31,5

*arr2 = ["5", "-", "3", "+", "2", "X", "5"]*

5 - 3 = 2
2 + 2 = 4
4 * 5 = 20

tot = 20

ЗАМЕТЬ: Я учусь программировать в javascript и благодарны за то, чтобы они достали меня из этой трясины.

8
задан 01.08.2019, 23:02
0 ответов