2013-05-27 76 views
-4

我想讓沒有按鈕的計算器。 你能幫我用函數計算嗎? 我有兩個數組,第一個數組與數組,第二個算術運算符。 在函數計算中,我必須從第一個數組和第二個數組中發送一個元素,但它不工作。在最後的課程中,必須給出答案。 你可以解釋我方法減少,我可以發送第二個數組作爲參數? 因爲在文檔中,我發現它只是求和元素。 如果有人寫下方法和函數的例子會很不勝感激。 這是我的代碼。JavaScript命令行計算器

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

那麼你的問題是什麼?這個代碼中的 – Doorknob

+0

返回NaN,我的答案是修改函數如何計算,它返回的結果取決於由算術運算符構成的第二個數組的元素 – jzabrodin

+2

所以你只是想讓我們修復你的代碼?這不是什麼堆棧溢出。請閱讀[問]頁面和[常見問題]。 – Doorknob

回答

1

是的,你可以使用reduce(見MDN)用自己的功能,但在這裏你有一些錯誤:

  1. 你應該開始索引1計算,因爲第一個元素(index = 0) ,你有curr = prev = the first element(這裏是1)
  2. 您正則表達式的符號-不匹配(你應該轉義)

我做了一個jsfiddle:http://jsfiddle.net/6UyUq/