【问题标题】:Regroup by array by day in date property在日期属性中按天按数组重新组合
【发布时间】:2017-08-07 00:22:13
【问题描述】:

如何在日期属性中创建一个按天重新组合数组的函数

例如我有这个数组..

var _array = [ 
{name:"sample1" ,date:'08-07-2017'}, 
{name:"sample2" ,date:'08-07-2017'},
{name:"sample3" ,date:'08-08-2017'},
{name:"sample4" ,date:'08-09-2017'},
{name:"sample5" ,date:'08-09-2017'},
{name:"sample5" ,date:'08-09-2017'},
];

然后我调用函数 regroup

regroup_byday(_array);

预期输出是

{ 
   [
    {name:"sample1" ,date:'08-07-2017'}, 
    {name:"sample2" ,date:'08-07-2017'},
   ],

   [
   {name:"sample3" ,date:'08-08-2017'}, 
   ],

   [
    {name:"sample4" ,date:'08-09-2017'},
    {name:"sample5" ,date:'08-09-2017'},
    {name:"sample5" ,date:'08-09-2017'},
   ]
};

提前致谢! ..

【问题讨论】:

    标签: javascript jquery arrays momentjs


    【解决方案1】:

    以下应该会产生您正在寻找的所需输出:

    var _array = [
    {name:"sample1" ,date:'08-07-2017'}, 
    {name:"sample2" ,date:'08-07-2017'},
    {name:"sample3" ,date:'08-08-2017'},
    {name:"sample4" ,date:'08-09-2017'},
    {name:"sample5" ,date:'08-09-2017'},
    {name:"sample5" ,date:'08-09-2017'}
    ];
    
    var regrouped = [];
    
    for (var i = 0; i < _array.length; i++) {
      var addNew = true;
      for (var j = 0; j < regrouped.length; j++) {
        if (_array[i].date === regrouped[j][0].date) {
          regrouped[j].push(_array[i]);
          addNew = false;
        }
      }
      if (addNew) {
        regrouped.push([_array[i]]);
      }
    }
    
    console.log(regrouped);

    【讨论】:

      【解决方案2】:

      遍历数组并将结果推送到以日期为键的中间ObjectObject的值就是你所需要的:

      var _array = [ 
      {name:"sample1" ,date:'08-07-2017'}, 
      {name:"sample2" ,date:'08-07-2017'},
      {name:"sample3" ,date:'08-08-2017'},
      {name:"sample4" ,date:'08-09-2017'},
      {name:"sample5" ,date:'08-09-2017'},
      {name:"sample5" ,date:'08-09-2017'},
      ];
      
      var result = Object.values(
        _array.reduce((regroup, obj) => {
          if(regroup[obj.date] === undefined) {
            regroup[obj.date] = [obj];
          } else {
            regroup[obj.date].push(obj);
          }
          return regroup;
        }, {})
      );
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多