我有一个像这样的字符串:
“45; 32; 31; 54”
我想从字符串中取出这4个数字,然后将它们全部加在一起并除以字符串中的数字,以获得平均值。
我该怎么做?可能只有1个数字(因此无需对其进行平均),或者可能有10个数字,我无法知道每个数字中将包含多少个数字,除非说总是至少有1个数字。
答案 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);
注意:使用+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,而对于旧浏览器,这种垫片应该是必须的。