2016-09-22 102 views
0

我需要计算字符串中的数字。数字由空格分隔。 (1 2 3 4 10)我试图通过charAt来做到这一点,如果这个数字不是一个数字,那么它不起作用。我对JS比较陌生,需要一些例子。我开始用这个,但遇到了一个两位数#:Javascript计算字符串中的数字

string1 = (1 1 1 4 10) 
var total = parseFloat(0); 
for(var j=0; j<string1.length; j++) { 
    total += parseFloat(string1.charAt(j)); 
} 

任何帮助,将不胜感激

+1

'string1 =(1 1 1 4 10)'<---这是无效的。打开开发者控制台,你会看到一个错误,指出它。 ''未捕获的SyntaxError:意外的数字'' – epascarello

+0

将你的字符串换成引号,然后简单地执行'string1.match(/ \ d +/g).length'。 – Xufox

+0

@Xufox:看起来像他试图总结数字 –

回答

0

创建一个数组:

var arr=[1,2,3] 

然后执行:

var count=0; 
arr.forEach(function(number){ 
count+=number; 
} 

或使用字符串:

var str="1 2 3"; 
var arr=str.split(" "); 

var count=0; 
arr.forEach(function(number){ 
count+=parseInt(number); 
} 

计数现在包含了所有字符的

1

我不知道为什么你需要做这样的总和,但如果这串来自另一种字体,就可以对付它,像这样:

var string1 = "(1 1 1 4 10)"; 
var aux = string1.replace("(","").replace(")",""); 
aux = aux.split(" "); 
var total = parseFloat(0); 
for(var j=0; j<aux.length; j++) { 
    total += parseFloat(aux[j]); 
} 
console.log(total); 

https://jsfiddle.net/bggLkvxd/1/

0

//使用方法拆分到字符串转换为阵列,然后添加数组项:

var string1 = "1 1 1 4 10", total = 0; 
string1.split(" ").forEach(function(item) { 
    total += +item; 
}); 
+0

+ = +做什么?0+“1”是“01”... –

+0

+“5”等于5, +'在将字符串转换为数字之前,所以我们有0 + 1. –

+0

对不起,很好的技巧......;) –

1

这是一个更简单的方法。首先,修正string1,所以它实际上是一个字符串(通过添加“”s),也正确地用“var string”声明它。然后你可以做这样的事情。

var string1 = ("1 1 1 4 10") 

function addString(input) { 
var sum = 0;      //get your empty variable ready 
var array1 = input.split(" "); //split your string into an array 
for(var i=0; i<array1.length; i++) { 
array1[i] = parseInt(array1[i]); // each new array element is integer 
sum += array1[i];     // += is operator for solve/refactor 
} 
return sum; 
} 

addString(string1); 
+0

为什么你的函数包含一个从未使用的参数输入? Theres不需要将变量包含在括号中(返回总和)并且注释被标记为// ... –