http://q.hatena.ne.jp/1448507045
このような連想配列でキーごとに4番目のスコア(rec)の部分の平均値を求めてキーごとに表示させたいのですが方法がわかりません。
例)
UNIT1の平均値は@@点です。
UNIT2の平均値は@@点です。
連想配列に入れた後で、キーごとにスコアの数を数えて、その回数で割る方法を考えましたが合計点を求めるところがわかりません。また連想配列のデータのスコアの部分の合計点を求める場合、やはり、連想配列に入れたあとで、処理するのでしょうか?あるいは、入れながら足していくのか? 調べてみても1つのキーに対して数が1つの例しか見つからず、上のように1つのキーに得点が複数ある場合の処理の方法が理解できずにいます。アドバイスいたたければ幸いです。
var tableMap = { UNIT1:["80", "40"], UNIT2:["50", "60", "90"] }; var averageMap = Object.keys(tableMap).reduce(function(map, key){ var row = tableMap[key]; map[key] = row.reduce(function(sum, value){return sum += parseFloat(value)},0) / row.length return map; },{}); //{UNIT1:60, UNIT2:66.66666666666667}
無理に副作用を嫌ってかえって分かりにくいコードになる図。
分かりやすい回答はa-kuma3さんお願いします。