У меня есть следующие цепи:
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 и благодарны за то, чтобы они достали меня из этой трясины.