JavaScript の reduce を使ってカテゴリごとに集計する
reduce を使って各カテゴリごとに値を集計する方法がとても便利。
今回は商品の価格をタイプごとにまとめる。
const array = [{
"name": "なし",
"type": "くだもの",
"price": 100
}, {
"name": "きゅうり",
"type": "やさい",
"price": 198
}, {
"name": "もも",
"type": "くだもの",
"price": 300
}, {
"name": "マグロ",
"type": "さかな",
"price": 500
}];
var result = array.reduce((accumulator, currentElement) => {
var element = accumulator.find((e) => e.type === currentElement.type);
if (element) {
element.price += currentElement.price;
} else {
accumulator.push({
"type": currentElement.type,
"price": currentElement.price
});
}
return accumulator;
}, []);
console.log(JSON.stringify(result));
初期値は空の配列。
その配列に大して find
で要素が存在するかチェックする。
存在すれば加算し、なければ新規追加する。