我想制作没有按钮的计算器。 你能帮我计算功能吗? 我有两个数组,第一个数组有数字,第二个有算术运算符。 在函数计算中,我必须从第一个数组发送一个元素,从第二个数组发送一个元素,但它不起作用。在最后的节目中必须给出答案作为号码。 你能解释我的方法减少,我可以发送第二个数组作为参数吗? 因为在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);
答案 0 :(得分:1)
是的,您可以使用reduce
(请参阅MDN)使用自己的功能,但这里有一些错误:
index = 0
),你有curr = prev = the first element
(这里是1)-
不匹配(你应该逃避它)我做了一个jsfiddle:http://jsfiddle.net/6UyUq/。
编辑:它没有考虑运营商的优先级,如@Jim Wharton的评论所示......