JavaScript命令行计算器

时间:2013-05-27 12:40:36

标签: javascript

我想制作没有按钮的计算器。 你能帮我计算功能吗? 我有两个数组,第一个数组有数字,第二个有算术运算符。 在函数计算中,我必须从第一个数组发送一个元素,从第二个数组发送一个元素,但它不起作用。在最后的节目中必须给出答案作为号码。 你能解释我的方法减少,我可以发送第二个数组作为参数吗? 因为在docs中我发现它只是求和元素。 如果有人用功能写减少方法的例子,我将非常感激。 这是我的代码。

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);

1 个答案:

答案 0 :(得分:1)

是的,您可以使用reduce(请参阅MDN)使用自己的功能,但这里有一些错误:

  1. 你应该从索引1开始计算,因为对于第一个元素(index = 0),你有curr = prev = the first element(这里是1)
  2. 你的正则表达式与符号-不匹配(你应该逃避它)
  3. 我做了一个jsfiddle:http://jsfiddle.net/6UyUq/


    编辑:它没有考虑运营商的优先级,如@Jim Wharton的评论所示......