【问题标题】:Sort an array with different objects by date in JS?在JS中按日期对具有不同对象的数组进行排序?
【发布时间】:2021-09-21 16:41:17
【问题描述】:

我有一个包含不同对象的数组,它们有不同的日期字段,无论属性名称created_atorder_dateupdated_at 是什么,我都想对其进行排序。如何按最接近今天日期的日期对数组进行排序?

数组如下所示:

const array = [{type : 'type1', created_at: '2021-07-31'}, {type : 'type2', order_date: '2021-07-13'}, {type : 'type2', order_date: '2021-07-07'}, {type : 'type1', created_at: '2021-08-05'}, {type : 'type3', updated_at: '2021-09-05'}];

【问题讨论】:

标签: javascript


【解决方案1】:

您可以使用Array.prototype.sort():

const array = [{
  type: 'type1',
  created_at: '2021-07-31'
}, {
  type: 'type2',
  order_date: '2021-07-13'
}, {
  type: 'type2',
  order_date: '2021-07-07'
}, {
  type: 'type1',
  created_at: '2021-08-05'
}, {
  type: 'type3',
  updated_at: '2021-09-05'
}];

const res = array.sort(function(a, b) {
  return new Date(b.created_at ?? b.order_date ?? b.updated_at) - new Date(a.created_at ?? a.order_date ?? a.updated_at);
})

console.log(res);

【讨论】:

  • c = a.created_at ?? a.order_date 也可以是d = b.created_at ?? b.order_date。或使用|| 以获得更多兼容性
  • 我在数组中还有另一个属性updated_at
【解决方案2】:

你可以试试这个

const array = [{type : 'type1', created_at: '2021-07-31'}, {type : 'type2', order_date: '2021-07-13'}, {type : 'type2', order_date: '2021-07-07'}, {type : 'type1', created_at: '2021-08-05'}, {type : 'type3', updated_at: '2021-09-05'}];

const sortedArray = array.sort(function(a,b){
  return new Date(b.order_date || b.created_at || b.updated_at) - new Date(a.order_date || a.created_at || a.updated_at);
});

console.log(sortedArray);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多