按属性按优先级排序

时间:2016-02-10 17:19:48

标签: javascript sorting ember.js

我有我想要排序的项目,我的项目在模型上计算了包含winningbiddingclosedwatching的属性

这些属性中的每一个都是真或假

我想对项目进行排序,以便首先获得所有获胜项目,然后是所有出价项目,然后是所有观看项目,然后是所有已关闭项目。

我怎么能实现这个目标?我是否需要在一个排序函数中完成所有操作,还是可以指定多个函数进行排序?

我已经尝试过这次胜利,但我不确定从哪里开始

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;
  }
}),

2 个答案:

答案 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;
           }
        }
    });