JavaScriptでJSON配列を特定のキーでグルーピングする方法(reduce)
JSON配列をグルーピングする方法です。JSON配列は以下とします。
[{'code':1,money:100,name:'卵'}, {'code':1,money:150,name:'肉'}, {'code':2,money:330,name:'かぼちゃ'}, {'code':2,money:210,name:'玉ねぎ'}]
特定のキーcodeでdistinctし、その他のデータは配列としてグルーピングします。以下のようにします。
[ {'code':1,datas: [{money:100,name:'卵'},{money:150,name:'肉'}]}, {'code':2,datas: [{money:330,name:'かぼちゃ'},{money:210,name:'玉ねぎ'}]} ]
配列のreduceを使用してグループ化します。
const arr = [{'code':1,money:100,name:'卵'}, {'code':1,money:150,name:'肉'}, {'code':2,money:330,name:'かぼちゃ'}, {'code':2,money:210,name:'玉ねぎ'}] const group = arr.reduce((result,current)=>{ const el = result.find(d=> d.code === current.code) if(el) { if(el.code ===current.code) { el.datas.push({ 'money': current.money, 'name': current.name }) } } else { result.push({ 'code': current.code, 'datas': [{'money': current.money, 'name': current.name}] }) } return result },[]) console.log(JSON.stringify(group))
実行すると以下のように出力されます。
[ { "code": 1, "datas": [ { "money": 100, "name": "卵" }, { "money": 150, "name": "肉" } ] }, { "code": 2, "datas": [ { "money": 330, "name": "かぼちゃ" }, { "money": 210, "name": "玉ねぎ" } ] } ]
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント