我有我想要排序的项目,我的项目在模型上计算了包含winning
,bidding
,closed
和watching
的属性
这些属性中的每一个都是真或假
我想对项目进行排序,以便首先获得所有获胜项目,然后是所有出价项目,然后是所有观看项目,然后是所有已关闭项目。
我怎么能实现这个目标?我是否需要在一个排序函数中完成所有操作,还是可以指定多个函数进行排序?
我已经尝试过这次胜利,但我不确定从哪里开始
sortedItems: Ember.computed.sort('filteredItems',function(a,b){
if(a.get('winning') == true && a.get('winning') != b.get('winning')){
return -1;
}
if(a.get('winning') == b.get('winning')){
return 0;
}
if(a.get('winning') == false && a.get('winning') != b.get('winning')){
return 1;
}
}),
答案 0 :(得分:1)
我建议使用这样的排序功能。它通过对出价状态进行分组来进行排序。
function (a, b) {
var status = { winning: 1, bidding: 2, closed: 3, watching: 4 };
return status[a.bidStatus] - status[b.bidStatus];
}
答案 1 :(得分:0)
consider winning = 0, bidding = 1, watching = 2, closed = 3
var arrayOfBids = [a, b, c, d, e, f];
arrayOfBids.sort(function(bid1, bid2) {
return getBidStatusVal(bid1.status) - getBidStatusVal(bid2.status);
function getBidStatusVal(bidStatus) {
switch(bidStatus) {
case "winning": return 0;
case "bidding": return 1;
case "watching": return 2;
case "closed": return 3;
default: return 4;
}
}
});