Javascript typescript-用sum映射数组
我让这个函数返回一个像照片中那样的对象Javascript typescript-用sum映射数组,javascript,typescript,Javascript,Typescript,我让这个函数返回一个像照片中那样的对象 this.events$ = this.disponibilityService.getDisponibilitiesByTeacher('a1') .pipe( map((result: any) => { let teachers = result.map((item: any) => { return { startHour: item.startHour, endHour: item.endHour, ye
this.events$ = this.disponibilityService.getDisponibilitiesByTeacher('a1')
.pipe(
map((result: any) => {
let teachers = result.map((item: any) => {
return { startHour: item.startHour, endHour: item.endHour, year: item.startDate.split('-')[0] };
});
console.log(teachers);
})
);
如何映射返回如下数组的结果
nbr:重复的年数
nbrHour:每年小时数的总和(小时数=结束小时-开始小时)
您可以按年份对数据进行分组,然后
map
分组,对于每个组,nbr
将是组大小,nbrhoor
将通过该组中所有元素的endHour-startHour
之和进行累积
const数据=[
{起点:800,终点:1200,年份:“2020”},
{星空:1400,结束时间:1800,年份:“2021”},
{起点:800,终点:1030,年份:“2020”},
];
const groupByYear=Object.entries(
数据减少((acc,el)=>{
如果(!根据【el.年】){
会计年度=[el];
}否则{
acc【el.年】。推送(el);
}
返回acc;
}, {})
);
const res=groupByYear.map([year,data])=>({
nbr:数据长度,
小时:data.reduce(
(acc,{startHour,endHour})=>acc+endHour-startHour,
0
),
年
}));
控制台日志(res)代码>
。作为控制台包装器{max height:100%!important;}
您为什么希望年份成为字符串?我不明白重复的年数是什么意思?@Cyclonecode 2020年重复了两次,所以nbr=2
[
{nbr: 2, nbrHour: 630, year: 2020},
{nbr: 1, nbrHour: 400, year: 2021}
]