我有一個字符串,像這樣:獲得由分號分隔字符串的數字和計算平均的jQuery
「45; 32; 31; 54」
我要出去把這些4個數字的字符串,然後將它們全部加在一起併除以字符串中的數字數以獲得平均值。
我該怎麼做?可能只有1個數字(因此不需要平均數字),或者可能有10個數字,我無法知道每個數字有多少個數字,除非說總會有至少1個數字。
我有一個字符串,像這樣:獲得由分號分隔字符串的數字和計算平均的jQuery
「45; 32; 31; 54」
我要出去把這些4個數字的字符串,然後將它們全部加在一起併除以字符串中的數字數以獲得平均值。
我該怎麼做?可能只有1個數字(因此不需要平均數字),或者可能有10個數字,我無法知道每個數字有多少個數字,除非說總會有至少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
將變量轉換爲數字
簡單的答案是:
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.計算平均:-)
這裏是:
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;
你不需要jQuery的這類任務的,你可以在一行所做的一切,用reduce:
var str = "45; 32; 31; 54";
var average = str.split("; ").reduce(function(avg, number, index) {
return +avg + (number - avg)/(index + 1)
});
這是一個漸進的平均水平,這也是有用的,如果你有很多的數字和/或大數字,所以經常規平均時,您可能會在總結元素時發生溢出,這種方法可以降低風險。
對於瀏覽器不支持reduce
上述文檔提供了一個墊片 - 時下現代瀏覽器支持ES5,對於舊版瀏覽器,這種墊片應該是必備的。
我喜歡:)謝謝! –