【发布时间】:2022-01-08 01:49:16
【问题描述】:
我有一个对象数组,每个对象都有四个属性(id、start、end 和 amount)。
然后根据这些数据创建一个新的对象数组,该数组具有以下属性:日期、持续时间和金额。 date 是 start 属性的时间戳的日期,duration 是 start 时间戳和 end 时间戳之间的时间,以分钟为单位。
然后我创建了两个变量,一个来自所选月份,另一个来自所选年份。然后根据选定的月份和年份过滤数组日期。例如,如果选择了第 11 个月,我只想要日期从第 11 个月开始的对象。这同样适用于年份。最终结果是根据所选月份和年份的日期列表。
const arrayOfDates = [
{
id: 1,
start: '2021-12-01T12:10:56+0000',
end: '2021-12-01T12:00:56+0000',
amount: 10
},
{
id: 2,
start: '2021-12-03T11:10:56+0000',
end: '2021-12-03T12:45:56+0000',
amount: 4
},
{
id: 3,
start: '2021-12-07T09:10:56+0000',
end: '2021-12-07T09:25:56+0000',
amount: 8
},
{
id: 4,
start: '2021-11-24T11:10:56+0000',
end: '2021-11-24T11:25:56+0000',
amount: 8
}
]
const selectedMonth = 12
const selectedYear = 2021
const mapped = arrayOfDates.map((el) => ({
date: new Date(el.start).toLocaleDateString('en-CA'),
duration: new Date(new Date(el.end).getTime() - new Date(el.start).getTime()).getMinutes(),
amount: el.amount
}))
const filteredBySelectedDate = mapped.filter((el) => {
var [year, month] = el.date.split('-')
return selectedMonth === +month && selectedYear === +year;
})
const mappedByDays = filteredBySelectedDate
但是,除了按天列出数组的元素(这是我目前的结果)。我想使用filteredBySelectedDate 数组按周过滤。换句话说,我想根据一个月的周数范围对数组的元素进行分组。像这样的数组:
const mappedByWeeks = [
{
interval: '12/01 - 12/04',
duration: 85,
amount: 14
},
{
interval: '12/05 - 12/11',
duration: 15,
amount: 8
}
]
【问题讨论】:
标签: javascript arrays typescript javascript-objects