gpt4 book ai didi

javascript - 在对象列表上使用reduce函数javascript

转载 作者:行者123 更新时间:2023-12-03 02:18:03 25 4
gpt4 key购买 nike

我每周都会收到一些对象,这些对象上的每个对象都有日期、时间和其他字段。我想对这些对象数组每天的总小时数进行排序。

对象示例

var anArray = [{
'End':"22:00",
'Id':"Q45575",
'Name':"W-299849",
'Start':"20:00",
'date':"2018-02-04",
'hours':2
},{
'End':"21:00",
'Id':"Q45551",
'Name':"W-299809",
'Start':"15:00",
'date':"2018-02-07",
'hours':5
},{
'End':"20:00",
'Id':"Q45515",
'Name':"W-299849",
'Start':"10:00",
'date':"2018-02-04",
'hours':2
}];

输出应该是这样的,假设星期日是 2/4

周日周一周二周三周五周六

4 0 0 5 0 0

这就是我所拥有的

  var resourceData = data.reduce((a, c) => {
var targetDay = new Date(c.date).getDay() === 6 ? 0 : (new Date(c.date).getDay() + 1);
if (a) {
a['week'][targetDay] += c.hours;
} else {
a = { 'week': new Array(7).fill(0) };
a['week'][targetDay] = c.hours;
}
return a;
}, {});

不起作用,我在 targetDay 时遇到错误

最佳答案

我认为 forEach 似乎更适合,而不是减少。

示例如下。

var anArray = [{
'End':"22:00",
'Id':"Q45575",
'Name':"W-299849",
'Start':"20:00",
'date':"2018-02-04",
'hours':2
},{
'End':"21:00",
'Id':"Q45551",
'Name':"W-299809",
'Start':"15:00",
'date':"2018-02-07",
'hours':5
},{
'End':"20:00",
'Id':"Q45515",
'Name':"W-299849",
'Start':"10:00",
'date':"2018-02-04",
'hours':2
}];

var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];

var result = {};

//lets just zero every day
(new Array(7).fill(0)).map((x,ix) => {
result[days[ix]] = 0;
});

//now lets add them up
anArray.forEach((d) => {
var dt = new Date(d.date);
result[days[dt.getDay()]] += d.hours;
});

console.log(result);

关于javascript - 在对象列表上使用reduce函数javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com