簡體   English   中英

如何使用moment.js按本周和上周記錄分組數據

[英]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"
}]

預期產量:

本星期

  • 彼得·漢森
  • 喬納斯·達·芬奇
  • 奧梅爾·雷諾茲

上個星期

  • 雷莎·約翰遜(Raisa Johnson)
  • 凱倫·安德森(Karen Anderson)
  • 克里斯蒂娜·安德森(Kristina Anderson)

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM