按多个条件对多维数组进行排序 [英] Sort multidimensional array by multiple criteria
本文介绍了按多个条件对多维数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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"
},
...
]
我有一个多维数组,我想以复杂的方式对它进行排序。
I've an multidimensional array and i want to sort it in a complex way.
- 首先按优先级排序 - 优先级最高
- 然后按日期对具有相同优先级的所有项目进行排序 - 第一个接近今天的下一个日期(将来只有日期)。如果一个项目没有日期,则将其放在最后。
- 按标题对所有具有相同日期(并且所有没有日期)的项目进行排序 - 按字母顺序排列
第一步是data.sort()没有问题但是我没有计划这样做。怎么做?
The first step is no problem with data.sort() but then i've no plan for doing that. How to do that?
推荐答案
一种可能的解决方案
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(您可以自行修复) )。
You should change your date field to be some kind of Epox or smth ( you can fix that by yourself ).
演示: http:// jsbin。 com / adosuh / 1 / edit
这篇关于按多个条件对多维数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文