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の大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント