我正在尝试使用对象 [[{},{},{}],[{},{},{}]]
循环遍历数组的数组,并创建一个新数组,基本上对数组进行“总计”。我对如何实现这一目标有点茫然。
我的数据如下所示:
[
[{
"2017-01-05": 607
}, {
"2017-01-06": 430
}, {
"2017-01-07": 357
}, {
"2017-01-08": 277
}],
[{
"2017-01-09": 607
}, {
"2017-01-10": 430
}, {
"2017-01-11": 357
}, {
"2017-01-12": 277
}]
],
我想每周“计数”和“标记”,并每周总计。示例:
newArray: [{"Week 1": 1075}, {"Week 2": 1590}]
我知道我应该使用forEach
循环,但它变得有点粗略:
dateArray.forEach( function (arrayWeek)
{
// push and name etc. functionality
});
非常感谢您的帮助和指导。
最佳答案
我将使用 map 功能并减少 map 内的每周:
var days = [
[{"2017-01-05":607}, {"2017-01-06":430}, {"2017-01-07":357}, {"2017-01-08":277}],
[{"2017-01-09":607}, {"2017-01-10":430}, {"2017-01-11":357}, {"2017-01-12":277}]
];
function aggregator(memo, day) {
for (var i in day) {
memo += day[i];
}
return memo;
}
// Original version from the question
var weeks = days.map(function(week, index) {
var obj = {};
obj['Week ' + (index + 1)] = week.reduce(aggregator, 0);
return obj;
});
console.log(weeks);
// Follow up version from question in the comments
var weeks2 = days.map(function(week, index) {
return {
name: 'week ' + (index + 1),
total: week.reduce(aggregator, 0)
};
});
console.log(weeks2);
关于javascript - 循环遍历包含对象的数组的数组,并在 JavaScript/Angular 中更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612416/