javascript - 如何使用javascript根据日期键对对象数组进行排序?

标签 javascript arrays sorting date object

我在 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)

关于javascript - 如何使用javascript根据日期键对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53723183/

相关文章:

C#:string[] 到定界字符串。有单线吗?

java - 你如何确保用户输入只是整数?

ruby - 通过 ruby​​ 中的键和值数组进行简单哈希合并(以 perl 为例)

c++ - 二进制表达式 Person 和 Person 的无效操作数

Java-对具有多个小数点的字符串进行排序

javascript - 我如何格式化这样的数字 xxxx-xx-xxxx

javascript - Div 内容未获取 cookie 值

javascript - 异步函数: TypeError: window.的回调中出现异常scrollTo不是函数(Meteor应用程序)

javascript - 我如何默认检查单选按钮?

sorting - 在 PowerShell 中对非常大的文本文件进行排序