首页 > 解决方案 > 在Typescript中按日期变量将数组元素分组为周

问题描述

我有一个名为 items 的数组,其中包含 29 个项目。每个项目都有日期、名称、代码和周数。我正在尝试按它们在打字稿中的周数对这些项目进行分组。有人可以帮忙吗?

这是我的数组目前的样子:

items:
0:
   code: "N"
   date: "2020-10-13T01:00:00.000Z"
   name: "Tuesday"
   week: 7
1:
   code: "N"
   date: "2020-10-13T01:00:00.000Z"
   name: "Tuesday"
   week: 7
2: {date: "2020-10-12T01:00:00.000Z", name: "Monday", code: "O", …}
3: {date: "2020-10-12T01:00:00.000Z", name: "Monday", code: "O", …}

ETC - 最多 29 个。但是我希望它按周分组如下。有谁知道如何做到这一点?

weeks:

0:
     days: 
          0:{name:Monday, date: ####, code:###}
          0:{name:Tuesday, date: ####, code:###}
1:
     days: 
          0:{name:Monday, date: ####, code:###}
          0:{name:Tuesday, date: ####, code:###}
2:
     days: 
          0:{name:Monday, date: ####, code:###}
          0:{name:Tuesday, date: ####, code:###}

标签: typescript

解决方案


groupBy从包中使用lodash(带有一点后处理)或for像这样简单地使用:

const weeks: Record<string, any> = {};
for (const item of items) {
  if (!weeks[item.week]) {
    weeks[item.week] = {
     days: []
    }
  }
  weeks[item.week].days.push({
    name: item.name,
    date: item.date,
    code: item.code
  })
}

注意:而不是any你应该用 days 数组道具指示某种类型,其中每个元素都有名称、日期和代码道具


推荐阅读