2014-06-17 53 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”。你的解决方案看起来不错,非常感谢 –