目標
以下のような文字列が入っている連想配列のうち、重複している日付の数をカウントしたいのですが、やり方が思いつきません。
javascript
1const dateList = [ 2 { createdAt: '2021-09-30' }, 3 { createdAt: '2021-09-29' }, 4 { createdAt: '2021-09-29' }, 5 { createdAt: '2021-09-28' }, 6 { createdAt: '2021-09-28' }, 7 { createdAt: '2021-09-28' }, 8 { createdAt: '2021-09-27' }, 9]
上のdateList
には日付の重複があります。2021-09-30
は1回、2021-09-29
は2回、2021-09-28
は3回、2021-09-27
は1回と。
この重複している回数を取得し、以下のように求めたいです。外部ライブラリは使用しても構いません。
実現したい連想配列:
javascript
1const newDateList = [ 2 { createdAt: '2021-09-30', count: 1}, 3 { createdAt: '2021-09-29', count: 2}, 4 { createdAt: '2021-09-28', count: 3}, 5 { createdAt: '2021-09-27', count: 1}, 6]
考えたこと
reduce
が使えないか考えました。しかし、カウント数の扱い方がよくわかりません。これでは各文字列に対応するcountが求まりません。
この場合reduce
は適切ではないのでしょうか。
javascript
1const reducer = (previousValue, currentValue, currentIndex, array) => { 2 let count = 1; 3 if(previousValue == currentValue) { 4 count += 1; 5 } 6} 7const newDateList = dateList.reduce(reducer, initialValue);
回答4件
あなたの回答
tips
プレビュー