Javascript 从一系列日期中获取每周和每月数据的最佳方法是什么?

Javascript 从一系列日期中获取每周和每月数据的最佳方法是什么?,javascript,arrays,object,foreach,momentjs,Javascript,Arrays,Object,Foreach,Momentjs,我必须在图表中显示注册用户的每日/每周/每月计数。这是我从后端得到的数据。现在我需要根据视图类型遍历数组。 我有这样的数据: [ { "date": "2019-10-28", "count": 0 }, { "date": "2019-10-29", "count": 4 }, { "date": "2019-10-30", "count": 5 }, { "date": "2019-10-31", "

我必须在图表中显示注册用户的每日/每周/每月计数。这是我从后端得到的数据。现在我需要根据视图类型遍历数组。 我有这样的数据:

[
  {
    "date": "2019-10-28",
    "count": 0
  },
  {
    "date": "2019-10-29",
    "count": 4
  },
  {
    "date": "2019-10-30",
    "count": 5
  },
  {
    "date": "2019-10-31",
    "count": 2
  },
  {
    "date": "2019-11-01",
    "count": 0
  },
  {
    "date": "2019-11-02",
    "count": 6
  },
  {
    "date": "2019-11-03",
    "count": 0
  },
  {
    "date": "2019-11-04",
    "count": 0
  },
  {
    "date": "2019-11-05",
    "count": 0
  },
  {
    "date": "2019-11-06",
    "count": 0
  },
  {
    "date": "2019-11-07",
    "count": 0
  },
  {
    "date": "2019-11-08",
    "count": 0
  },
  {
    "date": "2019-11-09",
    "count": 0
  }
]
[
  {
    "week": 44,
    "count": 15
  },
  {
    "week": 45,
    "count": 13
  },
  {
    "week": 46,
    "count": 3
  },
  {
    "week": 47,
    "count": 13
  }
]
[
  {
    "10": 100,
    "count": 15
  },
  {
    "11": 45,
    "count": 13
  },
  {
    "12": 460,
    "count": 3
  }
]
array.forEach((item, index) => {
   var weeknumber = moment(item.date).week();
   console.log("Week ", weeknumber);
})
如果是“每周视图”类型,则我需要得到如下结果:

[
  {
    "date": "2019-10-28",
    "count": 0
  },
  {
    "date": "2019-10-29",
    "count": 4
  },
  {
    "date": "2019-10-30",
    "count": 5
  },
  {
    "date": "2019-10-31",
    "count": 2
  },
  {
    "date": "2019-11-01",
    "count": 0
  },
  {
    "date": "2019-11-02",
    "count": 6
  },
  {
    "date": "2019-11-03",
    "count": 0
  },
  {
    "date": "2019-11-04",
    "count": 0
  },
  {
    "date": "2019-11-05",
    "count": 0
  },
  {
    "date": "2019-11-06",
    "count": 0
  },
  {
    "date": "2019-11-07",
    "count": 0
  },
  {
    "date": "2019-11-08",
    "count": 0
  },
  {
    "date": "2019-11-09",
    "count": 0
  }
]
[
  {
    "week": 44,
    "count": 15
  },
  {
    "week": 45,
    "count": 13
  },
  {
    "week": 46,
    "count": 3
  },
  {
    "week": 47,
    "count": 13
  }
]
[
  {
    "10": 100,
    "count": 15
  },
  {
    "11": 45,
    "count": 13
  },
  {
    "12": 460,
    "count": 3
  }
]
array.forEach((item, index) => {
   var weeknumber = moment(item.date).week();
   console.log("Week ", weeknumber);
})
如果是montly,那么我需要得到如下结果:

[
  {
    "date": "2019-10-28",
    "count": 0
  },
  {
    "date": "2019-10-29",
    "count": 4
  },
  {
    "date": "2019-10-30",
    "count": 5
  },
  {
    "date": "2019-10-31",
    "count": 2
  },
  {
    "date": "2019-11-01",
    "count": 0
  },
  {
    "date": "2019-11-02",
    "count": 6
  },
  {
    "date": "2019-11-03",
    "count": 0
  },
  {
    "date": "2019-11-04",
    "count": 0
  },
  {
    "date": "2019-11-05",
    "count": 0
  },
  {
    "date": "2019-11-06",
    "count": 0
  },
  {
    "date": "2019-11-07",
    "count": 0
  },
  {
    "date": "2019-11-08",
    "count": 0
  },
  {
    "date": "2019-11-09",
    "count": 0
  }
]
[
  {
    "week": 44,
    "count": 15
  },
  {
    "week": 45,
    "count": 13
  },
  {
    "week": 46,
    "count": 3
  },
  {
    "week": 47,
    "count": 13
  }
]
[
  {
    "10": 100,
    "count": 15
  },
  {
    "11": 45,
    "count": 13
  },
  {
    "12": 460,
    "count": 3
  }
]
array.forEach((item, index) => {
   var weeknumber = moment(item.date).week();
   console.log("Week ", weeknumber);
})
利用图书馆时刻,我可以得到如下周数:

[
  {
    "date": "2019-10-28",
    "count": 0
  },
  {
    "date": "2019-10-29",
    "count": 4
  },
  {
    "date": "2019-10-30",
    "count": 5
  },
  {
    "date": "2019-10-31",
    "count": 2
  },
  {
    "date": "2019-11-01",
    "count": 0
  },
  {
    "date": "2019-11-02",
    "count": 6
  },
  {
    "date": "2019-11-03",
    "count": 0
  },
  {
    "date": "2019-11-04",
    "count": 0
  },
  {
    "date": "2019-11-05",
    "count": 0
  },
  {
    "date": "2019-11-06",
    "count": 0
  },
  {
    "date": "2019-11-07",
    "count": 0
  },
  {
    "date": "2019-11-08",
    "count": 0
  },
  {
    "date": "2019-11-09",
    "count": 0
  }
]
[
  {
    "week": 44,
    "count": 15
  },
  {
    "week": 45,
    "count": 13
  },
  {
    "week": 46,
    "count": 3
  },
  {
    "week": 47,
    "count": 13
  }
]
[
  {
    "10": 100,
    "count": 15
  },
  {
    "11": 45,
    "count": 13
  },
  {
    "12": 460,
    "count": 3
  }
]
array.forEach((item, index) => {
   var weeknumber = moment(item.date).week();
   console.log("Week ", weeknumber);
})
我不确定获得预期结果的最佳方法和途径。
有什么建议吗?谢谢

您需要处理数据并准备一个通用逻辑来将数据转换为正确的格式

您可以使用
groupBy
forEach
以及
reduce
方法来准备数据,如下例所示

演示: