原生js对数组进行分组,按照按时间正序排序

// 根据name 属性值相同的数据进行分组
const selectRows = [
  {
    name : '一组',
    groupDate: '2022-01-20 17:30:12', 
    status: '状态一'
  },{
    name : '一组', 
    groupDate: '2022-01-12 13:02:24', 
    status: '状态二'
  },{
    name : '二组', 
    groupDate: '2022-01-2 21:04:45', 
    status: '状态三'
  }
]
let arr = []
let groups = {}
selectRows .forEach(c => {
  let value = c['name '];
  groups[value] = groups[value] || [];
  groups[value].push(c);
})
/** groups输出结果
{
 一组: [
    {name: '一组', groupDate: '2022-01-20 17:30:12', status: '状态一'}
    {name: '一组', groupDate: '2022-01-12 13:02:24', status: '状态二'}
  ],
  二组:[
    {name: "二组",groupDate: "2022-01-2 21:04:45",status: "状态三"}
  ]
}**/
// 按groupDate时间正序排序取时间最早的一条数据
let arr2 = []
for (let k in groups) {
  groups[k].sort((a, b) => a.groupDate.localeCompare(b.groupDate))
  arr2.push(groups[k])
  arr.push(groups[k][0])
}
/** arr2输出结果
[
 [{
  name: '一组', groupDate: '2022-01-12 13:02:24', status: '状态一'
 },{
  name: '一组', groupDate: '2022-01-20 17:30:12', status: '状态二'
 }],
 [{
  name: "二组",groupDate: "2022-01-2 21:04:45",status: "状态三"
 }]
]
arr输出结果
[{
  name: '一组', groupDate: '2022-01-12 13:02:24', status: '状态一'
},{
  name: "二组",groupDate: "2022-01-2 21:04:45",status: "状态三"
}]
**/

你可能感兴趣的:(原生js对数组进行分组,按照按时间正序排序)