javascript - 循环遍历包含对象的数组的数组,并在 JavaScript/Angular 中更新数组

标签 javascript angularjs arrays

我正在尝试使用对象 [[{},{},{}],[{},{},{}]] 循环遍历数组的数组,并创建一个新数组,基本上对数组进行“总计”。我对如何实现这一目标有点茫然。

我的数据如下所示:

[
  [{
    "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/

相关文章:

angularjs - 为 Hybrid Angular 2/1x 应用设置 Karma 配置

javascript - 使用 Javascript 获取 HTML 数组长度

javascript - 我的自动建议无法正常工作?

AngularJS 延迟(超时)循环中的每个 http 调用

javascript - 地下天气 API - Forcast 帮助 - Javascript

angularjs - this.$ 在 Angular 中意味着什么?

c++ - 如何使用 C++ 将文本文件的不同部分上传到不同的数组

iphone - 要显示的图像数组

javascript - SharePoint 和 JavaScript - "Open with Explorer"问题

javascript - jQuery Scroll - 进入/退出滚动区域时触发一次函数