reduce()を使ったリファクタリング
Q&A
Closed
解決したいこと
reduce()
を使って以下のコードをリファクタリングしたいです。
現状複数回mapを回しているので、計算量が多くなってしまっています。。。
(これでもいいのですが、どうしても気になります...)
出力される結果は以下の形に持って行きたいです。
・同じ日付のものはitems
として配列に渡す
[
{
"date": "2020-1-1",
"items": [
"1",
"2"
]
}, {
"date": "2020-2-1",
"items": [
"3"
]
}
]
今の自分のソースコード
const data = [
{
date: '2020-1-1',
item: '1'
},
{
date: '2020-1-1',
item: '2',
},
{
date: '2020-2-1',
item: '3',
}
];
const newDate = Array.from(new Set(data.map((i) => i.date)));
const result = newDate.map((i) => {
const items = data.filter((x) => x.date === i).map((x) => x.item)
return {
date: i,
items: items
}
})
0