等待处理数组元素我有这个数组finalArr = [12,+,4,-,8,*,2];
我想要的阵列减少到一个值,像这样:var result = 12+4-8*2;
使用减少方法
这里是我做了什么:
var operators = {'+' : function (a,b) {return a + b},
'-' : function (a,b){return a - b},
'*' : function (a,b){return a * b},
'/' : function (a,b){return a/b}};
var opSymbols = ['+','-','*','/'];
finalArr = [12,+,4,-,8,*,2];
finalArr.reduce(function (acc,next,index,arr){
for (var m = 0; m < opSymbols.length; m++) {
var op = '';
if (opSymbols[m] === arr[1]) {
op = opSymbols[m];
acc = operators[op](arr[0],arr[2]);
}
if (index > 1 && opSymbols[m] === arr[index]) {
op = opSymbols[m];
acc += arr[index+1];
}
}
return acc;
});
我越来越finalArr.reduce行中的语法错误(SyntaxError:expected expression,got','),我不认为我正在正确执行reduce方法。任何帮助?感谢
所以结果应该是一个字符串,或16(或零,如果你把价值考虑到运算符优先级) –
请注意,使用Robby的修复程序,您将得到结果16;但数学上,由于操作的顺序,事情更加复杂。数学结果应为0,因为12 + 4 - 8 * 2是(12 + 4) - (8 * 2),而不是(12 + 4 - 8)* 2. –
@TJCrowder这应该是一个计算器程序,所以a + b * c应该是c *(a + b) – dadadodo