javascript - JS 按数组中日期值(对象)的月份分组

标签 javascript arrays object grouping

我的数组是这样的:

myArray = [
  {date: "2017-01-01", num: "2"}
  {date: "2017-01-02", num: "3"}
  {date: "2017-02-04", num: "6"}
  {date: "2017-02-05", num: "15"}
]

我想把它转换成:

myArray = [
   {group: "0", data: [
      {date: "2017-01-01", num: "2"}
      {date: "2017-01-02", num: "3"}]
   },
   {group: "1", data: [  
      {date: "2017-02-04", num: "6"}
      {date: "2017-02-05", num: "15"}]
   },
]

基本上,按日期键的月份分组。

最佳答案

使用Array.prototype.reduceString.prototype.splitArray.prototype.map 函数的解决方案:

var myArray = [
    {date: "2017-01-01", num: "2"},
    {date: "2017-01-02", num: "3"},
    {date: "2017-02-04", num: "6"},
    {date: "2017-02-05", num: "15"}
],
    groupKey = 0;
    groups = myArray.reduce(function (r, o) {
        var m = o.date.split(('-'))[1];
        (r[m])? r[m].data.push(o) : r[m] = {group: String(groupKey++), data: [o]};
        return r;
    }, {});

var result = Object.keys(groups).map(function(k){ return groups[k]; });

console.log(result);

关于javascript - JS 按数组中日期值(对象)的月份分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888837/

相关文章:

javascript - 无法在用户上下文中读取 null 的属性 'innerHTML'。<annoynomous>

javascript - 使用 jQuery 更改图像

javascript - 请帮助我完成这个简单的脚本

javascript - JavaScript 标签中的 PHP 变量

c# - 仅用循环比较两个数组

c++ - 代码中的溢出会覆盖什么内存

Java方法不改变参数对象

javascript - 将对象键和值映射到另一个对象

c++ - ARRAY - null,正元素的数量和正元素的总和

javascript - 访问javascript对象中的变量