我有这样的字符串13-2-10-7-3
,其中的数字由-
分隔。
我想知道在javascript中从字符串中计算所有数字sum
的最佳方法是什么?
答案 0 :(得分:2)
这是一个用-
分割字符串的函数。然后浏览所有结果并添加它们。
function add(string){
return string.split('-').reduce(function(a,b){return+a+(+b); });
}
这将使用正则表达式从字符串中提取数字。然后它将使用.reduce()
添加它们。不要复杂。 +a+(+b)
会将a
和b
转换为JavaScript数字,然后添加它们。 +var
将从字符串变为数字变量。据我所知,这是你可以实现的最短方法。
如果您不支持.reduce()
功能,请使用应支持每个浏览器的备用代码:
function add(string) {
var strings = string.split('-'),
sum = 0,i;
for (i = 0; i < strings.length; i +=1 ) {
sum += (+strings[i]);
}
}
速度:~0.062秒
答案 1 :(得分:1)
由于数字始终以-
分隔,因此最佳方法是将分割为数组:
var numbers = "13-2-10-7-3";
numbers = numbers.split("-");
此时numbers
将是一个字符串数组,您无法对它们进行求和,否则您只需将它们连接在一起即可。所以你应该将它们转换为数字。
这很容易映射数组元素到数字
numbers = number.map(Number);
现在你可以将>>数组减少到其元素之和
var result = numbers.reduce(function (a, b) { return a + b; });
答案 2 :(得分:0)
var sum = "13-2-10-7-3".split('-').reduce(function(x, y) {
return parseInt(x)+ parseInt(y);
});
答案 3 :(得分:0)
试试这个:
&#34;分裂&#34; function将delimitedNumbers字符串转换为字符串数组。使用&#34; - &#34;确定分割的位置。
从概念上讲,数字变量看起来像[&#34; 13&#34;] [&#34; 2&#34;] [&#34; 10&#34;] [&#34; 7&#34;分裂后的[&#34; 3&#34;]。
然后我们循环遍历数字数组,使用parseInt函数将每个元素从字符串转换为数字,然后添加到sum变量的当前值。
最后,我们召唤一个警告弹出窗口以显示最终总和。
sum = function(){
var i, len, delimitedNumbers, numbers, sum;
delimitedNumbers = "13-2-10-7-3";
numbers = delimitedNumbers.split('-');
len = numbers.length;
sum = 0;
for(i = 0; i < len; i++)
{
sum = sum + parseInt(numbers[i]);
}
alert("The sum is: " + sum);
}
答案 4 :(得分:0)
reduce()
需要IE9 +
我在这里使用jQuery.each
var input = '13-2-10-7-3', sum = 0;
$.each(input.split('-'), function(idx, elm) {
sum += (+elm); // parse string to int using `+`
});
document.write('The sum of ' + input + ' is ' + sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>