javascript - 如何使用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' }
]
解决方案
您可以获取每个对象的第一个键,将其转换为日期,然后通过比较这些日期来运行排序:
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)