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

2024-03-28

我的数组是这样的:

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.reduce, String.prototype.split and Array.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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS 按月份对数组中的日期值(对象)进行分组 的相关文章

随机推荐