配列の要素の合計と平均を計算する方法は?


177

配列のすべての要素を追加したり、それらを平均したりするのに問題があります。これをどのように行い、現在持っているコードを使用して実装しますか?要素は、以下のように定義されることになっています。

<script type="text/javascript">
//<![CDATA[

var i;
var elmt = new Array();

elmt[0] = "0";
elmt[1] = "1";
elmt[2] = "2";
elmt[3] = "3";
elmt[4] = "4";
elmt[5] = "7";
elmt[6] = "8";
elmt[7] = "9";
elmt[8] = "10";
elmt[9] = "11";

// Problem here
for (i = 9; i < 10; i++){
  document.write("The sum of all the elements is: " + /* Problem here */ + " The average of all the elements is: " + /* Problem here */ + "<br/>");
}   

//]]>
</script>

26
var elmt = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]とても良いでしょう
James McLaughlin

回答:


134
var sum = 0;
for( var i = 0; i < elmt.length; i++ ){
    sum += parseInt( elmt[i], 10 ); //don't forget to add the base
}

var avg = sum/elmt.length;

document.write( "The sum of all the elements is: " + sum + " The average is: " + avg );

値は文字列なので、配列を反復処理するだけで、最初に整数に変換する必要があります。また、平均は、値の合計を値の数で割ったものです。


13
私がやるだろう改善のみ置き換えることであろうfor(var i = 0; i < elmt.length; i++;)for(var i = 0, l = elmt.length; i < l; i++)
ダンD.

5
その人ではない、または話題から外れることではありませんが、parseInt()に基数引数を含めることは良い習慣です。つまり、sum += parseInt(elmt[i], 10);elmt [i]のベースが10であると想定しています。リンク
ライダーブルックス

9
0による除算に注意してください(elmt.length may me 0)
caulitomaz

2
@BramVanroy短編小説:いいえ、毎回「l」を設定するわけではありません。長い話:DanDのソリューションはパフォーマンス/速度を向上させることです。反復ごとに配列の長さをチェックすることは、実際にローカル変数に長さを格納して各反復を参照するよりも遅いためです。
CatalinBerta

9
@VitoGentileとDanDは、最新のブラウザーがコンパイルしてパフォーマンスを向上させるためにコードを補強することは、ベストプラクティスではないはずです。
nauti

496

私がよりエレガントと考えるソリューション:

const sum = times.reduce((a, b) => a + b, 0);
const avg = (sum / times.length) || 0;

console.log(`The sum is: ${sum}. The average is: ${avg}.`);

1
Array.prototype.reduce()をサポートしていないため、<= IE8では機能しません。詳細については、developer.mozilla.org
en

14
累積移動平均を使用すると、これをすべて削減関数内で行うことができます(sum/times.lengthステップは不要):var avg = times.reduce(function(p,c,i){return p+(c-p)/(i+1)},0);
zamnuts

6
@zamnuts私はあなたと一緒です、Thor84noコメントは完全に乱れていると思います-array.reduceが複雑すぎるとわかった場所から解雇されて嬉しいです。ただし、私はあなたのコードも使用しません。単純な事実として、これには除算と2つの追加があり、最後の1つの除算ほど効率的ではありません
gotofritz

12
ES2015では、かなり洗練されています。times.reduce((a,b) => (a+b)) / times.length;
Ray Foss

12
@furf 5年後、多くの最新のブラウザーでは、よりエレガントな「reduce()」の方が高速(または同等)に見えます。Chrome 65およびほとんどのfirefoxでは、そのテストでreduceの方が優れています。
ロバート卿

116

ES6

const average = arr => arr.reduce( ( p, c ) => p + c, 0 ) / arr.length;
    
const result = average( [ 4, 4, 5, 6, 6 ] ); // 5
    
console.log(result);


3
改善:Array.prototype.average = function () { var sum = 0, j = 0; for (var i = 0; i < this.length, isFinite(this[i]); i++) { sum += parseFloat(this[i]); ++j; } return j ? sum / j : 0; };
Gilad Peleg 2013年

42
コードで作成されていないオブジェクトを拡張しないでください。
ブラッド

1
UPDATEは機能しません:["RER"、 "4"、 "3re"、5、new Object()]。average(); 予期された4.5ではなく0を返します
Luckylooke 2014年

4
そして、これは長さがなくなると異常終了します
Jimmy Kane

2
@JimmyKaneいいえ、返されNaNます。
bzeaman 2017年


20

一般的に、ワンライナーの削減を使用した平均は次のとおりです

elements.reduce(function(sum, a,i,ar) { sum += a;  return i==ar.length-1?(ar.length==0?0:sum/ar.length):sum},0);

特に尋ねられた質問に

elements.reduce(function(sum, a,i,ar) { sum += parseFloat(a);  return i==ar.length-1?(ar.length==0?0:sum/ar.length):sum},0);

効率的なバージョンは

elements.reduce(function(sum, a) { return sum + a },0)/(elements.length||1);

1分でJavascript配列の縮小を理解する http://www.airpair.com/javascript/javascript-array-reduce

gotofritzが指摘したように、Array.reduceは未定義の値をスキップします。だからここに修正があります:

(function average(arr){var finalstate=arr.reduce(function(state,a) { state.sum+=a;state.count+=1; return state },{sum:0,count:0}); return finalstate.sum/finalstate.count})([2,,,6])

2
elements.length!=0?elements.length:1 このように書くこともできます: elements.length || 1 これは短く、読みやすいです。
4rzael

2
これは空のギャップがない配列でのみ機能することに
注意して

1
提案:コードスニペットの縮小されていない(実際にはきれいに印刷された)バージョンを追加して、人々が読めるようにします。自分で編集したいのですが、その分、人の答えを変えたくありません。
Justin Morgan

16

次のような整数の配列があるとします。

var values = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];

平均は次の式で得られます

A =(1 / n)Σxi (i = 1からnまで) ...したがって:x1 / n + x2 / n + ... + xn / n

現在の値を値の数で割り、前の結果を戻り値に追加します。

reduceメソッドのシグネチャは

reduce(callback[,default_previous_value])

reduceコールバック関数は、次のパラメーターを取ります。

  • p:前回の計算結果
  • c:現在の値(現在のインデックスから)
  • i:現在の配列要素のインデックス値
  • a:現在の縮小配列

2番目のreduceのパラメーターはデフォルト値です...(配列が空の場合に使用されます)。

したがって、平均的な削減方法は次のようになります。

var avg = values.reduce(function(p,c,i,a){return p + (c/a.length)},0);

必要に応じて、別の関数を作成できます

function average(p,c,i,a){return p + (c/a.length)};
function sum(p,c){return p + c)};

そして、単にコールバックメソッドシグネチャを参照します

var avg = values.reduce(average,0);
var sum= values.reduce(sum,0);

または、直接配列プロトタイプを拡張します。

Array.prototype.sum = Array.prototype.sum || function (){
  return this.reduce(function(p,c){return p+c},0);
};

reduceメソッドが呼び出されるたびに値を除算することが可能です。

Array.prototype.avg = Array.prototype.avg || function () {
  return this.reduce(function(p,c,i,a){return p+(c/a.length)},0);
};

または、以前に定義されたArray.protoype.sum()を使用してさらに良い

メソッド、プロセスを最適化して、部門を1回だけ呼び出します:)

Array.prototype.avg = Array.prototype.avg || function () {
  return this.sum()/this.length; 
};

次に、スコープの任意のArrayオブジェクトで:

[2, 6].avg();// -> 4
[2, 6].sum();// -> 8

注意:NaNウィッシュを返す空の配列は、私の見解では0よりも正確であり、特定のユースケースで役立ちます。


13

Mathパーツでlodash、_。sum(array)および_.mean(array)を使用することもできます(他にも便利なものがあります)。

_.sum([4, 2, 8, 6]);
// => 20
_.mean([4, 2, 8, 6]);
// => 5

6

最速ではありませんが、最短かつ1行でmap()とreduce()を使用しています。

var average = [7,14,21].map(function(x,i,arr){return x/arr.length}).reduce(function(a,b){return a + b})

1
おそらく短くなります[7,14,21].reduce((avg,e,i,arr)=>avg+e/arr.length,0);が、空の配列では動作が異なります。空の配列で結果を空にしたい場合:[].reduce((a,e,i,arr)=>(a?a:0)+e/arr.length,"")
Valen

@Tobiqマップとリデュースは、ES5(2009年に標準化された)以降、かなり標準的です
Johann Echavarria '19

for (var avg = 0, length = i = arr.length; i--;) avg += arr[i] / length非常に明確で短く、はるかに高速
Tobiq 2017

2
@Tobiq、あなたのコードは明確ではありません。このタイプのループは、一見すると理解できません。
Porkopek 2018年

5

(非常に嫌われている)eval()を使用する必要がありますが、それを行うための卑劣な方法の1つです。

var sum = eval(elmt.join('+')), avg = sum / elmt.length;
document.write("The sum of all the elements is: " + sum + " The average of all the elements is: " + avg + "<br/>");

私はこれを「ボックス外」オプションの1つとして投稿すると思っただけです。あなたは決して知りません、うぬぼれはあなたにポイントを与えるかもしれません(または奪う)。


+1効率的なワンライナー!それがクライアント側のブラウザー内Javascriptである場合、eval()私が見ることができる唯一の考えられる問題は、配列に数値のみが含まれていることを確認する必要があることです(もちろん、ここにある他のすべての回答にも当てはまります)。数値以外のエントリがReferenceErroror SyntaxError, except nested arrays of numbers which introduce 、 `でクラッシュすると、数値の合計が正しくなくなります。もちろん、node.jsなどのサーバー側のJSでは、当然ながらeval()セキュリティの問題が発生する可能性があります。しかし、これは適切に構成されたクライアント側の使用には最適に見えます。
user56reinstatemonica8 2013

1
実際にeval()は、このように含めるとパフォーマンスの問題が発生する可能性があります。nczonline.net
2013/06/25

5

私は自分のライブラリでこれらの方法を使用しています。

Array.prototype.sum = Array.prototype.sum || function() {
  return this.reduce(function(sum, a) { return sum + Number(a) }, 0);
}

Array.prototype.average = Array.prototype.average || function() {
  return this.sum() / (this.length || 1);
}

編集:それらを使用するには、次のように単純に配列に合計または平均を求めます。

[1,2,3].sum() // = 6
[1,2,3].average() // = 2

整然と実装しましたが、reduceではなくforループを使用するようにsumを実装しました。まだ非常にきれいにコーディングされています。
XDS 2016

5

ES6対応のブラウザでこのポリフィルは役に立つかもしれません。

Math.sum = (...a) => Array.prototype.reduce.call(a,(a,b) => a+b)

Math.avg = (...a) => this.sum(...a)/a.length;

あなたは間同じコール方法を共有することができMath.sumMath.avg かつMath.max、など

var maxOne = Math.max(1,2,3,4) // 4;

あなたはMath.sumを使うことができます

var sumNum = Math.sum(1,2,3,4) // 10

または、合計する配列がある場合は、

var sumNum = Math.sum.apply(null,[1,2,3,4]) // 10

と同じように

var maxOne = Math.max.apply(null,[1,2,3,4]) // 4

メソッドをに追加する代わりに、Array.prototypeテーマをMathオブジェクトに追加することをお勧めします。これらはすべて「番号ハンドラ」です。
Oboo Cheng

3

これは、JavaScriptの「Math」オブジェクトに「平均」コマンドを追加する簡単な追加です!!

Math.average = function(input) {
  this.output = 0;
  for (this.i = 0; this.i < input.length; this.i++) {
    this.output+=Number(input[this.i]);
  }
  return this.output/input.length;
}

次に、合計を取得するための「Math」オブジェクトにこの追加があります。

Math.sum = function(input) {
  this.output = 0;
  for (this.i = 0; this.i < input.length; this.i++) {
    this.output+=Number(input[this.i]);
  }
  return this.output;
}

だからあなたがするすべては

alert(Math.sum([5,5,5])); //alerts “15”
alert(Math.average([10,0,5])); //alerts “5”

そして、プレースホルダー配列を配置する場所に変数を渡すだけです(それらが数値の場合、入力は文字列になる可能性があります!


1

forループカウンターを0に設定します。要素9を取得しているので、今のように完了です。他の答えは基本的な数学です。変数を使用して合計を格納し(文字列をintにキャストする必要があります)、配列の長さで割ります。


1

まず、使用する予定のすべての変数を定義します。numbers配列については[]、コンストラクターメソッドではなくのリテラル表記を使用していることに注意してくださいarray()。さらに、複数の変数を0に設定する短い方法を使用しています。

var numbers = [], count = sum = avg = 0;

次に、空の数値配列に値0〜11を入力します。これは、元の開始点に移動するためです。配列をどのようにプッシュしているのかに注意してくださいcount++。これにより、countの現在の値がプッシュされ、次に次回のために値が増分されます。

while ( count < 12 )
    numbers.push( count++ );

最後に、numbers配列の「for each」の数値の関数を実行しています。この関数は一度に1つの数値を処理します。これは、関数本体内で「n」と識別しています。

numbers.forEach(function(n){
  sum += n; 
  avg = sum / numbers.length;
});

最後に、結果を確認するためにsumavg値と値の両方をコンソールに出力できます。

// Sum: 66, Avg: 5.5
console.log( 'Sum: ' + sum + ', Avg: ' + avg );

http://jsbin.com/unukoj/3/editで実際にオンラインでご覧ください


1

私はアブデンナートウミの答えに基づいています。理由は次のとおりです。

1.)私はブラッドに同意します。私たちが作成しなかったオブジェクトを拡張することは良い考えではないと思います。

2.)array.lengthjavascriptで正確に信頼できる、私はArray.reducebeacuse を好むa=[1,3];a[1000]=5;、今a.length戻るでしょう1001

function getAverage(arry){
    // check if array
    if(!(Object.prototype.toString.call(arry) === '[object Array]')){
        return 0;
    }
    var sum = 0, count = 0; 
    sum = arry.reduce(function(previousValue, currentValue, index, array) {
        if(isFinite(currentValue)){
            count++;
            return previousValue+ parseFloat(currentValue);
        }
        return previousValue;
    }, sum);
    return count ? sum / count : 0; 
};

1
Array.prototype.avg=function(fn){
    fn =fn || function(e,i){return e};
    return (this.map(fn).reduce(function(a,b){return parseFloat(a)+parseFloat(b)},0) / this.length ) ; 
};

次に:

[ 1 , 2 , 3].avg() ;  //-> OUT : 2

[{age:25},{age:26},{age:27}].avg(function(e){return e.age}); // OUT : 26

1

エバーグリーンブラウザでは、矢印関数を使用できます avg = [1,2,3].reduce((a,b) => (a+b);

100,000回実行すると、forループアプローチとreduceの時間差は無視できます。

s=Date.now();for(i=0;i<100000;i++){ n=[1,2,3]; a=n.reduce((a,b) => (a+b)) / n.length };
console.log("100k reduce took " + (Date.now()-s) + "ms.");

s=Date.now();for(i=0;i<100000;i++){n=[1,2,3]; nl=n.length; a=0; for(j=nl-1;j>0;j--){a=a+n[j];} a/nl };
console.log("100k for loop took " + (Date.now()-s) + "ms.");

s=Date.now();for(i=0;i<1000000;i++){n=[1,2,3]; nl=n.length; a=0; for(j=nl-1;j>0;j--){a=a+n[j];} a/nl };
console.log("1M for loop took " + (Date.now()-s) + "ms.");

s=Date.now();for(i=0;i<1000000;i++){ n=[1,2,3]; a=n.reduce((a,b) => (a+b)) / n.length };
console.log("1M reduce took " + (Date.now()-s) + "ms.");

/* 
 * RESULT on Chrome 51
 * 100k reduce took 26ms.
 * 100k for loop took 35ms.
 * 10M for loop took 126ms.
 * 10M reduce took 209ms.
 */


1
console.time&についてもっと学ぶ必要がありますconsole.timeEnd
Abdennour TOUMI 2016年

@AbdennourTOUMIヒントをありがとう、覚えておきます...しかし、それは非標準であり、標準化の軌道に乗っていません。developer.mozilla.org/en-US/docs/Web/API/Console/timeEnd
Ray Foss

1
私は元の質問を回避していることを知っていますが、パフォーマンス測定にperformance.now()を使用するのはどうですか?
deejbee 2016年

@deejbeeそれは浮動小数点の精度を提供します...しかし、それは少し冗長で互換性が少ないです。これを使用してマーカーを設定すると、実際のコードで役立ちます
Ray Foss

1

平均最短ワンライナー:

let avg = [1,2,3].reduce((a,v,i)=>(a*i+v)/(i+1));

合計最短ワンライナー:

let sum = [1,2,3].reduce((a,b)=>a+b);

0

キックのためだけに:

var elmt = [0, 1, 2,3, 4, 7, 8, 9, 10, 11], l = elmt.length, i = -1, sum = 0;
for (; ++i < l; sum += elmt[i])
    ;
document.body.appendChild(document.createTextNode('The sum of all the elements is: ' + sum + ' The average of all the elements is: ' + (sum / l)));

0

私たちができると思う

var k=elmt.reduce(function(a,b){return parseFloat(a+parseFloat(b));})
var avg=k/elmt.length; 
console.log(avg);

1)を(a)9 + b( "1")の数に追加すると、結果は "91"になるため、parseFloatを2回使用していますが、追加が必要です。だから私はparseFloatを使いました

2)(a)9 + parseFloat( "1")の追加が発生すると、結果は "10"になりますが、文字列になりたくないので、もう一度parseFloatを使用しました。

私は明確であることを望みます。提案は大歓迎です


0

これは単純に平均を見つける私の新人の方法です。これが誰かを助けることを願っています。

function numAvg(num){
    var total = 0;
    for(var i = 0;i < num.length; i++) { 
        total+=num[i];
    }
    return total/num.length;
}

0

ここにあなたのワンライナーがあります:

var average = arr.reduce((sum,item,index,arr)=>index !== arr.length-1?sum+item:sum+item/arr.length,0)

0

これは、forループと関数を使用して平均を計算する直接的な解決策になると思います。

var elmts = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];

function average(arr) {
    var total = 0;
    for (var i = 0; i < arr.length; i++) {
        total += arr[i];
    }
        console.log(Math.round(total/arr.length));
}

average(elmts);

0

これには無限の解決策があるようですが、私はこれが簡潔でエレガントであることがわかりました。

const numbers = [1,2,3,4];
const count = numbers.length;
const reducer = (adder, value) => (adder + value);
const average = numbers.map(x => x/count).reduce(reducer);
console.log(average); // 2.5

またはより簡潔に:

const numbers = [1,2,3,4];
const average = numbers.map(x => x/numbers.length).reduce((adder, value) => (adder + value));
console.log(average); // 2.5

ブラウザによっては、矢印関数がサポートされていないため、明示的な関数呼び出しが必要になる場合があります。

const r = function (adder, value) {
        return adder + value;
};
const m = function (x) {
        return x/count;
};
const average = numbers.map(m).reduce(r);
console.log(average); // 2.5

または:

const average1 = numbers
    .map(function (x) {
        return x/count;
     })
    .reduce(function (adder, value) {
        return adder + value;
});
console.log(average1);

マップ関数でN分割を行っています。最初にすべての数値を合計値に減らしてから、1つの除算のみを行うことをお
Eugenio

0

平均が必要で、合計を計算する必要がない場合は、reduceを1回呼び出すだけで平均を計算できます。

// Assumes an array with only values that can be parsed to a Float
var reducer = function(cumulativeAverage, currentValue, currentIndex) {
  // 1. multiply average by currentIndex to find cumulative sum of previous elements
  // 2. add currentValue to get cumulative sum, including current element
  // 3. divide by total number of elements, including current element (zero-based index + 1)
  return (cumulativeAverage * currentIndex + parseFloat(currentValue))/(currentIndex + 1)
}
console.log([1, 2, 3, 4, 5, 6, 7, 8, 9, 10].reduce(reducer, 0)); // => 5.5
console.log([].reduce(reducer, 0)); // => 0
console.log([0].reduce(reducer, 0)); // => 0
console.log([].reduce(reducer, 0)); // => 0
console.log([,,,].reduce(reducer, 0)); // => 0
console.log([].reduce(reducer, 0)); // => 0

0

誰かがそれを必要とする場合-再帰的な平均を示します。

元の質問のコンテキストでは、ユーザーが追加の値を挿入することを許可し、各要素に再度アクセスするコストを負担することなく、既存の平均を「更新」したい場合は、再帰的平均を使用できます。

/**
 * Computes the recursive average of an indefinite set
 * @param {Iterable<number>} set iterable sequence to average
 * @param {number} initAvg initial average value
 * @param {number} initCount initial average count
 */
function average(set, initAvg, initCount) {
  if (!set || !set[Symbol.iterator])
    throw Error("must pass an iterable sequence");

  let avg = initAvg || 0;
  let avgCnt = initCount || 0;
  for (let x of set) {
    avgCnt += 1;
    avg = avg * ((avgCnt - 1) / avgCnt) + x / avgCnt;
  }
  return avg; // or {avg: avg, count: avgCnt};
}

average([2, 4, 6]);    //returns 4
average([4, 6], 2, 1); //returns 4
average([6], 3, 2);    //returns 4
average({
  *[Symbol.iterator]() {
    yield 2; yield 4; yield 6;
  }
});                    //returns 4

どうやって:

これは、現在の平均と要素数を維持することで機能します。新しい値を含める場合は、カウントを1つ増やし、既存の平均をでスケーリングして、平均に(count-1) / count追加newValue / countします。

利点:

  • すべての要素を合計するわけではないため、64ビットのフロートに格納できない多数の要素が生じる可能性があります。
  • 追加の値が使用可能になった場合は、既存の平均を「更新」できます。
  • シーケンスの長さを知らなくてもローリング平均を実行できます。

欠点:

  • より多くの部門が発生します
  • 無限ではない-雇用しない限り、Number.MAX_SAFE_INTEGERアイテムに限定 BigNumber

-1

HTMLコンテンツの平均

jQueryまたはJavaScript querySelectorを使用すると、フォーマットされたデータに直接アクセスできます...例:

<p>Elements for an average: <span class="m">2</span>, <span class="m">4</span>,
   <span class="m">2</span>, <span class="m">3</span>.
</p>

したがって、jQueryを使用すると

var A = $('.m')
  .map(function(idx) { return  parseInt($(this).html()) })
  .get();
var AVG = A.reduce(function(a,b){return a+b}) / A5.length;

itensにアクセスして平均化する他の4つの方法(!)を参照してください:http ://jsfiddle.net/4fLWB/


2
OPがXを実行するように依頼し、Yの次にXを実行する方法を彼に伝えたので、反対票を投じます。
eremzeit 2016年

こんにちは@eremzeit、ありがとうございます。私は太字のタイトルを使用して、「それは別のケースであり、コンテンツをHTMLに変換する」と言っています。考慮してください...関連については、この種の使用(ユーザーが表示するHTMLからのデータへの直接アクセス)はアカデミックゲームではありません... (!)これは、HTMLの中にある「監査真実」、についてです、ジャバスクリプトで「ヒトから隠されて」いない...だけでなく、ウィキペディアでは、典型的な例を参照してください:370万件の科学PMCの記事660万立法の文書でLexML。一部の人々はjsでデザインやゲームをするだけでなく、監査のためのツールも使用します。
Peter Krauss

-1

var arr = [1,2,3,4,5]

function avg(arr){
  var sum = 0;
  for (var i = 0; i < arr.length; i++) {
    sum += parseFloat(arr[i])
  }
  return sum / i;
}

avg(arr)====== >>>> 3

これは、数値または配列内の数値として文字列を処理します。


あなたの答えのいくつかの説明は整然としている。
David Hoelzer、2015

あなたが正しい:これが今機能するように合計を数値として定義しました。関数に配列を入力すると、配列の平均が出力されます。
dan chow 2015

-2
    var scores =[90, 98, 89, 100, 100, 86, 94];
        var sum = 0;
        var avg = 0;
        for(var i = 0; i < scores.length;i++){
  //Taking sum of all the arraylist
            sum = sum + scores[i];   
                }
  //Taking average     
             avg = sum/scores.length;        
  //this is the function to round a decimal no    
             var round = avg.toFixed();
             console.log(round);

1
Stack Overflowへようこそ。あなたの答えは、それが質問に答える理由と方法を詳細に説明する必要があります。コードスニペットは推奨されますが、訪問者が理解できるようにコードを説明する必要があります。ここに回答方法ガイドがあります:stackoverflow.com/help/how-to-answer
ChrisM '20

-3

この場合、D3をお勧めします。最も読みやすい(2種類の平均を提供する)

let d3 = require('d3');
let array = [1,2,3,4];
let sum = d3.sum(array); //10
let mean = d3.mean(array); //2.5
let median = d3.median(array); 

4
平均を
計算
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.