[英]How to group data by this week and last week records using moment.js
我有一個包含日期屬性的對象數組。 我想按照本周的記錄和上周的記錄進行分組。 使用javascript和moment.js實現此目標的最佳方法是什么。 以下是數據集的結構。
const obj = [{
first_name: "Peter",
last_name: "Hansen",
date: "2018-01-01"
},
{ first_name: "Jonas",
last_name:"Da Vinci",
date: "2018-01-02"
},
{ first_name: "Ohmel",
last_name: "Reynolds",
date: "2018-01-03"
},
{ first_name: "Raisa",
last_name: "Johnson",
date: "2017-12-25"
},
{
first_name: "Karen",
last_name: "Anderson",
date: "2017-12-26"
},
{
first_name: "Kristina",
last_name: "Alvaro",
date: "2017-12-27"
}]
預期產量:
本星期
上個星期
您可以使用array#reduce
根據星期對陣列進行分組。
const arr = [{ first_name: "Peter", last_name: "Hansen", date: "2018-01-01" }, { first_name: "Jonas", last_name:"Da Vinci", date: "2018-01-02" }, { first_name: "Ohmel", last_name: "Reynolds", date: "2018-01-03" }, { first_name: "Raisa", last_name: "Johnson", date: "2017-12-25"}, { first_name: "Karen", last_name: "Anderson", date: "2017-12-26" }, { first_name: "Kristina", last_name: "Alvaro", date: "2017-12-27" }]; var sortedByWeek = arr.reduce((res, {date, first_name, last_name}) => { var startOfWeek = moment(date, 'YYYY-MM-DD').startOf('week').add(1,'days').format('YYYY-MM-DD'); res[startOfWeek] = res[startOfWeek] || []; res[startOfWeek].push(first_name + ' ' + last_name); return res; },{}); console.log(sortedByWeek);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.