2013-12-22 28 views
0

我有一個字符串,像這樣:獲得由分號分隔字符串的數字和計算平均的jQuery

「45; 32; 31; 54」

我要出去把這些4個數字的字符串,然後將它們全部加在一起併除以字符串中的數字數以獲得平均值。

我該怎麼做?可能只有1個數字(因此不需要平均數字),或者可能有10個數字,我無法知道每個數字有多少個數字,除非說總會有至少1個數字。

回答

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將變量轉換爲數字

+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

這裏是:

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

你不需要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,對於舊版瀏覽器,這種墊片應該是必備的。