等待處理數組元素我有這個數組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