2014-06-17 97 views
-5

如何將下列字符串轉換爲總和?字符串與數字的總和

var sums = [{sum:"0+0=0"},{sum:"1+0=1"} 

var str = sums[0].sum; 

var sum = 0; 

for(i=0;i<str.length;i++){ 
    var n = parseInt(str[i]) 
    sum += n;//Help 
} 

這種方法的原因是我得到了一個數組中的字符串和。如果它不是一個字符串值,那麼它不能沒有錯誤地傳遞。然後我需要評估總和並返回答案。

+0

您的數組無效 – Arvind

+1

'總和[0]'是'對象'。 'str'會是'summs [0] .sum' – Ingmars

+1

你想從'parseInt(str [i])'中得到什麼結果? '「0 + 0 = 0」'不是一個有效整數 – scrblnrd3

回答

0

假設你要總結每個字符串的部分是=後的部分:

var sum = 0; 
var n = 0; 
var result = ""; 

for(i=0; i<str.length; i++){ 
    n = str[i].sum.lastIndexOf('='); 
    result = str[i].sum.substring(n + 1); 

    sum += parseInt(result, 10); // don't forget to specify radix 
} 

這就是說,我們確實需要更多的信息,能夠幫助您。

1

sums[0]Objectstr應該是sums[0].sum,它會工作。

但是!如果數字包含多個數字,那麼您當前的實現將失敗。更安全的方法將分割該字符串:

var sums = [{sum:"0+0=0"},{sum:"1+0=1"}] 
var str = sums[0].sum; 

// Detecting operator 
var operator; 
if (str.indexOf('+')) operator = '+'; 
if (str.indexOf('-')) operator = '-'; 
if (str.indexOf('*')) operator = '*'; 
if (str.indexOf('/')) operator = '/'; 

var chunks = str.split(operator); 

var firstOperand = parseInt(chunks[0]); 
var secondOperand = parseInt(chunks[1].split('=')[0]); 

var result; 
switch (operator) { 
    case '+': 
     result = firstOperand + secondOperand; break; 
    case '-': 
     result = firstOperand - secondOperand; break; 
    case '*': 
     result = firstOperand * secondOperand; break; 
    case '/': 
     result = firstOperand/secondOperand; break; 
    default: break; 
} 

console.log('RESULT:', result); 
+0

感謝您的幫助,當我必須檢查所有操作員「+ -/*」時,這可能會有點笨重。我將看看是否有另一個解決方案,我想實現。 –

+0

不那麼龐大,只有幾行。檢查代碼更新。 – Ingmars

+0

我實際上已經將總和分解成一個問題,並且將它們存儲在單獨的數組中,即「1 + 1」和「2」。你的解決方案看起來不錯,非常感謝 –