JavaScriptでJSON配列をグルーピングする方法(reduce)
JSON配列をグルーピングする方法です。JSON配列は以下とします。
const arr = [ { 名前: 'あじ', 分類: '魚', 価格: 200 }, { 名前: 'さんま', 分類: '魚', 価格: 120 }, { 名前: 'いわし', 分類: '魚', 価格: 150 }, { 名前: '豚肉', 分類: '肉', 価格: 500 }, { 名前: '鶏肉', 分類: '肉', 価格: 150 }, { 名前: '鶏肉', 分類: '肉', 価格: 320 } ]
分類ごとにまとめて価格は合計出したい、件数をカウントしたいとします。以下になるようにします。
result = [ { 分類: '肉', 価格合計: 970, 合計件数: 3 }, { 分類: '魚', 価格合計: 470, 合計件数: 3 } ]
配列のreduceを使用してグループ化します。
const arr = [ { 名前: 'あじ', 分類: '魚', 価格: 200 }, { 名前: 'さんま', 分類: '魚', 価格: 120 }, { 名前: 'いわし', 分類: '魚', 価格: 150 }, { 名前: '豚肉', 分類: '肉', 価格: 500 }, { 名前: '鶏肉', 分類: '肉', 価格: 150 }, { 名前: '鶏肉', 分類: '肉', 価格: 320 } ] const group = arr.reduce((result,current)=>{ const el = result.find(d=> d.分類 === current.分類) if(el) { el['合計件数'] ++ el['価格合計'] += current['価格'] } else { result.push({ '分類': current.分類, '価格合計': current.価格, '合計件数': 1 }) } return result }, []) console.log(group)
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント