我有这个数组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:期望的表达式,得到了','),而且我认为我没有正确执行reduce方法。有什么帮助吗?谢谢

最佳答案

运算符是字符串,因此您需要引用它们:

finalArr = [12,'+',4,'-',8,'*',2];

关于javascript - 使用reduce方法处理数组元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40504275/

10-10 05:08