ScrapingしたJRAレース結果のjsonファイルから連想配列を作って、Array.Reduce を用いて集計している件、枠順別成績も同時に取得するにはどうしたら良いか?
連想配列を作るときに、枠は8枠まであるので、連想配列の要素に配列を入れてみた。
jsonというjsonファイルからplayerという連想配列にデータを取り込むとして、
player[k]={'Jockey':json[i].Jockey, 'wk':[0,0,0,0,0,0,0,0], …………………
で、もし勝っていたら、
player[k].wk[parseInt(json[i].Waku) - 1] = 1;
として、その枠番のデータを1にしておけば勝利数が集計される。
Reduce関数のところでも、for文で回せばよいし、初期値のところは、配列をそのまま渡せばOK。
var group = player.reduce(function (result, current) {
var element = result.find(function (p) {
return p.Jockey === current.Jockey
});
if (element) {
element.count ++;
…
for (let step = 0; step < 8; step++) {
element.wk[step] += current.wk[step];
}
} else {
Jockey: current.Jockey,
count: 1,
…
wk: current.wk
}