JavaScript命令行计算器

JavaScript命令行计算器,javascript,Javascript,我想做一个没有按钮的计算器。 你能帮我做函数计算吗? 我有两个数组,第一个是数字数组,第二个是算术运算符数组。 在函数计算中,我必须从第一个数组发送一个元素,从第二个数组发送一个元素,但它不起作用。在最后的程序中,必须给出答案作为数字。 你能给我解释一下reduce的方法吗?我可以发送第二个数组作为参数吗? 因为在文档中,我发现它只对元素求和。 如果有人写一个函数化简的例子,我将不胜感激。 这是我的密码 var str = ("1+1+1+1-1*3"); var reg = /(\d+\.\d

我想做一个没有按钮的计算器。 你能帮我做函数计算吗? 我有两个数组,第一个是数字数组,第二个是算术运算符数组。 在函数计算中,我必须从第一个数组发送一个元素,从第二个数组发送一个元素,但它不起作用。在最后的程序中,必须给出答案作为数字。 你能给我解释一下reduce的方法吗?我可以发送第二个数组作为参数吗? 因为在文档中,我发现它只对元素求和。 如果有人写一个函数化简的例子,我将不胜感激。 这是我的密码

var str = ("1+1+1+1-1*3");
var reg = /(\d+\.\d+)|\d+/g;

var myArray = str.match(reg);
var reg1 = /['+','-','*',"/"]/g;
var myArray2 = str.match(reg1);

console.log(myArray);
console.log(myArray2);



var i = 0;


function calculate(prev,curr,i){
if(myArray2[i] === "+"){
    // 
    curr = parseInt(prev,10)+parseInt(curr,10);
}

    else if(myArray2[i]==='-'){
        //
    curr = prev-curr;}

    else if(myArray2[i] ==='*'){
        //
        return prev*curr;
    }

    else{
        //
        return prev/curr;
    }
    }
var finAns = myArray.reduce(calculate);
alert ("Answer = " +finAns);
是的,您可以在自己的函数中使用reduce-see,但这里有一些错误:

应该从索引1开始计算,因为对于第一个元素索引=0,这里的第一个元素是curr=prev=1 您的正则表达式与符号不匹配-应将其转义 我做了一个jsfiddle:


编辑:它没有考虑到@Jim Wharton的评论中显示的运算符优先级

那个么你们的问题是什么?在这段代码中,返回NaN,我的答案是modify函数如何计算,它返回的结果取决于第二个数组的元素,这个数组由算术运算符组成,所以你们只需要我们修复你们的代码?这不是堆栈溢出的目的。请阅读这一页。不,我想有人给我关于reduce方法的答案,有可能给他发送第二个数组作为参数。因为我读到这个方法只能对元素求和。@user24996这里是Array.reduce的文档。这些参数都有文档记录。JSFIDLE会产生不准确的结果,因为它忽略了操作顺序。尝试使用var str=4+8/2-3*2;它将产生6而不是2。