一尘不染

按日期键对JSON数组排序

json

我有一个json数组,我尝试 按日期对它 进行 排序, 然后再附加它。

该数组如下所示:

result = [];
result.push(
  {id: 'ID', result: {url: 'test', date: '15 May 2013, 6:40 pm'}},
  {id: 'ID', result: {url: 'test', date: '20 Dec 2012, 8:00 am'}},
  {id: 'ID', result: {url: 'test', date: '29 Jun 2012, 5:47 pm'}}
);

目前, 我已经设法对 日期 数组 进行了如下 排序

var datearray = [
    '2011-05-26 12:00:00',
    '2016-01-26 12:00:00',
    '2011-01-26 12:00:00',
    '2012-12-08 07:00:00',
    '2011-01-26 12:00:00',
    '1995-01-05 06:00:00'
];

datearray.sort();

这给了我:

1995-01-05 06:00:00
2011-01-26 12:00:00
2011-01-26 12:00:00
2011-05-26 12:00:00
2012-12-08 07:00:00
2016-01-26 12:00:00

我不确定如何对 包含多个键 的复杂数组执行相同的操作 。我知道 我应该先将日期格式设置为YYYY-MM-DD, 但之后会有点混乱。

一个良好的开端将是我目前在jsbin上找到的内容:http
://jsbin.com/ipatok/8/edit


阅读 253

收藏
2020-07-27

共1个答案

一尘不染

function comp(a, b) {
return new Date(a.result.date).getTime() - new Date(b.result.date).getTime();
}

your_array.sort(comp);

只是为了扩展@Karthikr的评论。

var result = [];

result.push({
  id: 'ID',
  result: {
    url: 'test',
    date: '15 May 2013, 6:40 pm'
  }
}, {
  id: 'ID',
  result: {
    url: 'test',
    date: '20 Dec 2012, 8:00 am'
  }
}, {
  id: 'ID',
  result: {
    url: 'test',
    date: '29 Jun 2012, 5:47 pm'
  }
});

function comp(a, b) {
  return new Date(a.result.date).getTime() - new Date(b.result.date).getTime();
}

result.sort(comp);

$('body').append(JSON.stringify(result));


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
2020-07-27