首页 > 解决方案 > 如何使用javascript根据日期键对对象数组进行排序?

问题描述

我在javascript中有一个如下数组(日期mm-dd-yyyy格式)。

[ 
  {'12-11-2018': 'NA' },
  { '12-05-2018': 'NA' },
  { '12-09-2018': 'pass' },
  { '12-07-2018': 'pass' },
  { '12-10-2018': 'pass' },
  { '12-08-2018': 'pass' },
  { '12-06-2018': 'pass' } 
]

我想使用日期升序对其进行排序。

预期产出

[ 
  { '12-05-2018': 'NA' },
  { '12-06-2018': 'pass' },
  { '12-07-2018': 'pass' },
  { '12-08-2018': 'pass' },
  { '12-09-2018': 'pass' },
  { '12-10-2018': 'pass' },
  { '12-11-2018': 'NA' } 
]

标签: javascriptarrayssortingdateobject

解决方案


您可以获取每个对象的第一个键,将其转换为日期,然后通过比较这些日期来运行排序:

const data = [{
    '12-11-2018': 'NA'
  },
  {
    '12-05-2018': 'NA'
  },
  {
    '12-09-2018': 'pass'
  },
  {
    '12-07-2018': 'pass'
  },
  {
    '12-10-2018': 'pass'
  },
  {
    '12-08-2018': 'pass'
  },
  {
    '12-06-2018': 'pass'
  }
]

const getDate = str => {
  const parts = str.split('-')
  return new Date(parts[0], parts[1] - 1, parts[2])
}

const getFirstKey = obj => Object.keys(obj)[0]

const fullConversion = dateStr => getDate(getFirstKey(dateStr))

const sorter = (a, b) => fullConversion(a) < fullConversion(b) ? -1 : 1

const result = data.sort(sorter)

console.dir(result)


推荐阅读