改訂
以下に書いてある記事は思いつきで書いたものです、当初は毎日入っているデータに対して曜日を取れば処理できると思っていましたが、色々考えた結果普通にgetDateを使ったほうが同じ手間で簡単でした
前提
arrayにはこういう構造でデータが入っているものとする
const messages = [
{
"date": new Date("2020/06/29")
},
{
"date": new Date("2020/06/30")
},
]
曜日比較コード
dateのgetDay()関数で曜日を示すindexが取れ、それが日付が変わることを示すのでそれを使った判定が楽だと思います。(日を取って比較してもいいがこちらのほうが手間がかからない)
formatにはdayjsを使っていますが気にしないでください
let day
messages.forEach((message) => {
// 次の日になったら日付を出力する
if (message.date.getDay() !== day) {
console.log(`\n${dayjs(message.date).format("YYYY/MM/DD")}`)
}
day = message.date.getDay()
});
備考
- 曜日取得で判定しているので一週間分急にデータがなく過ぎたらバグる
改良版日付比較コード
同じくgetDateで日付のindexが取れるのでこっちのほうが同条件でおおむねバグらない感じでした
let date
messages.forEach((message) => {
// 次の日になったら日付を出力する
if (message.date.getDate() !== date) {
console.log(`\n${dayjs(message.date).format("YYYY/MM/DD")}`)
}
date = message.date.getDate()
});
備考
- 日付の数字しか取れないので、一ヶ月急に過ぎたらバグるが多分現実にあまりないと思うので気にしなくていい