配列には reduce 関数が組み込まれています。短いワンライナーが好きな場合は、次のようにすることもできます。
var arr = [1,2,3,4];
function sum(x,y){
return x + y;
}
var total = arr.reduce(sum); // total -> 10
// This also works
var total = arr.reduce( function(x,y) { return (x + y); } );
var avg = ( total / arr.length );
Reduce は、シーケンスを単一の値に「還元」する高階関数です。
reduce の実行フローは次のとおりです。
var temp = sum( arr[0], arr[1] );
temp = sum( temp, arr[2] );
temp = sum( temp, arr[3] );
return temp;
Array データ構造に新しい関数を追加するための Andrew Shepherd の回答を盗みます。
Array.prototype.sum = function() { return this.reduce( function(x,y) { return (x+y); } )};
Array.prototype.avg = function() { return (this.sum() / this.length) };