获取以分号分隔的字符串中的数字并计算平均jquery

时间:2013-12-22 13:00:05

标签: javascript jquery string

我有一个像这样的字符串:

“45; 32; 31; 54”

我想从字符串中取出这4个数字,然后将它们全部加在一起并除以字符串中的数字,以获得平均值。

我该怎么做?可能只有1个数字(因此无需对其进行平均),或者可能有10个数字,我无法知道每个数字中将包含多少个数字,除非说总是至少有1个数字。

4 个答案:

答案 0 :(得分:2)

这是:

var s="45;32;31;54";
var s_array=s.split(';');
var sum=0;
var avarage=0;
for(var i =0;i<s_array.length;i++){

  sum+=parseInt(s_array[i]); 
}
avarage=sum/s_array.length;

答案 1 :(得分:1)

简单的答案是:

var data = "45; 32; 31; 54"; //select the string
var arr = data.split('; '); //split the string
var sum = 0;

$.each(arr, function( index, value ) {
    sum += parseFloat(value);
});

var avg = sum / (arr.length);
console.log(avg)

步骤: 1.定义字符串变量 2.将其拆分为数组。 3.解析数组并添加所有元素 4.计算平均值: - )

答案 2 :(得分:1)

尝试

var str = "45; 32; 31; 54";
var arr = str.split(';'); //split into array
console.log(arr);

var sum = arr.reduce(function(a, b) { return +a + +b }); //Calculate sum
var avg = sum / arr.length; // Calculate avg
console.log(avg);

DEMO

注意:使用+Variable将变量转换为数字

答案 3 :(得分:1)

你不需要jQuery来完成这类任务,你可以使用reduce在一行中完成所有工作:

var str = "45; 32; 31; 54";

var average = str.split("; ").reduce(function(avg, number, index) {
   return +avg + (number - avg) / (index + 1)
});

这是一个增量平均值,如果你有很多数字和/或大数字也很有用,所以通过常规平均,你可能在总结元素时最终会溢出,这种方法可以降低风险。 / p>

对于浏览器不支持reduce,上面的文档提供了一个垫片 - 现在的现代浏览器支持ES5,而对于旧浏览器,这种垫片应该是必须的。