将一个数组中的重复对象推送到它们自己的数组中

Pushing duplicate objects from one array into their own arrays

我收到了一组类似于以下内容的数据。

let arr = [
        {date: "2018-02-02 00:00:00", tabsID: '154', hours: '3'},
        {date: "2018-02-05 00:00:00", tabsID: '29', hours: '5'},
        {date: "2018-02-06 00:00:00", tabsID: '154', hours: '4'},
        {date: "2018-02-06 00:00:00", tabsID: '29', hours: '6'},
        {date: "2018-02-09 00:00:00", tabsID: '154', hours: '9'},
        {date: "2018-02-10 00:00:00", tabsID: '100', hours: '7'},
        {date: "2018-02-10 00:00:00", tabsID: '129', hours: '2'},
        {date: "2018-02-12 00:00:00", tabsID: '100', hours: '3'},
      ]

我希望能够对数组进行排序,并将任何具有匹配日期的对象推送到它们自己的数组中,如下所示

let sortedArr = [
        [
          {date: "2018-02-02 00:00:00", tabsID: '154', hours: '3'}
        ],
        [
          {date: "2018-02-05 00:00:00", tabsID: '29', hours: '5'}
        ],
        [
          {date: "2018-02-06 00:00:00", tabsID: '154', hours: '4'},
          {date: "2018-02-06 00:00:00", tabsID: '29', hours: '6'}
        ],
        [
          {date: "2018-02-09 00:00:00", tabsID: '154', hours: '9'}
        ],
        [
          {date: "2018-02-10 00:00:00", tabsID: '100', hours: '7'},
          {date: "2018-02-10 00:00:00", tabsID: '129', hours: '2'},
        ]
        [
          {date: "2018-02-12 00:00:00", tabsID: '100', hours: '3'}
        ],
      ]

我考虑过对数组执行 map() 或 reduce() 函数,但老实说不知道从哪里开始。

您可以使用 hashmapdate 和 return 其值集分组数组,如下所示:

let arr = [
        {date: "2018-02-02 00:00:00", tabsID: '154', hours: '3'},
        {date: "2018-02-05 00:00:00", tabsID: '29', hours: '5'},
        {date: "2018-02-06 00:00:00", tabsID: '154', hours: '4'},
        {date: "2018-02-06 00:00:00", tabsID: '29', hours: '6'},
        {date: "2018-02-09 00:00:00", tabsID: '154', hours: '9'},
        {date: "2018-02-10 00:00:00", tabsID: '100', hours: '7'},
        {date: "2018-02-10 00:00:00", tabsID: '129', hours: '2'},
        {date: "2018-02-12 00:00:00", tabsID: '100', hours: '3'},
];
console.log( mapDates(arr) );

function mapDates(arr){
     let map = {};
     for(let i = 0; i < arr.length; i++){
          if(!map[ arr[i]['date'] ])
               map[ arr[i]['date'] ] = [ arr[i] ];
          else
               map[ arr[i]['date'] ].push(arr[i]);
     }
     return Object.values(map);
}