3
var data = [{
    "priority": "1",
    "date": "01.03.2013",
    "title": "Yeah hi"
}, {
    "priority": "2",
    "date": "",
    "title": "Another title"
}, {
    "priority": "2",
    "date": "22.12.2013",
    "title": "Foo"
}, {
    "priority": "1",
    "date": "10.04.2013",
    "title": "Hey there"
}, {
    "priority": "2",
    "date": "15.08.2013",
    "title": "Hello world"
},
...
]

我有一个多维数组,我想以一种复杂的方式对其进行排序。

  1. 首先按“优先级”排序——最高优先级在前
  2. 然后按“日期”对具有相同优先级的所有项目进行排序-首先是今天附近的下一个日期(只有将来的日期)。如果一个项目没有日期,把它放在最后。
  3. 按“标题”对具有相同日期(以及所有没有日期)的所有项目进行排序 - 按字母顺序

第一步对 data.sort() 没有问题,但是我没有这样做的计划。怎么做?

4

1 回答 1

5

一种可能的解决方案

data.sort(function(a,b) {
  if ( parseInt(a.priority) > parseInt(b.priority) )
     return 1;
  else if ( parseInt(a.priority) < parseInt(b.priority) )
     return -1;
  else if (a.date > b.date )
     return 1;
  else if ( a.date < b.date )
     return -1;
  else if (a.title > b.title )
     return 1;
  else if ( a.title < b.title )
     return -1;
  else
     return 0;
});

您应该将日期字段更改为某种 Epox 或 smth(您可以自己修复)。

演示:http: //jsbin.com/adosuh/1/edit

于 2013-05-08T08:47:26.700 回答