2012-05-01 33 views
0

我想通过两个属性对一个集合进行排序,其中一个是“complete”,它返回true或false,另一个是id,除非我需要一个属性以降序排列。有没有办法做到这一点?主干综合排序问题

回答

2

是的,你可以做那样的事情。集合的comparator需要一个参数或两个参数函数:

比较器功能可以被定义为一个sortBy(传递函数,它接受一个参数),或作为sort(通过一个比较器功能需要两个参数)。

你会想使用这两个参数的形式,这样的事情:

comparator: function(a, b) { 
    var ac = a.get('complete'); 
    var bc = b.get('complete'); 
    if(ac && !bc) 
     return 1; 
    if(!ac && bc) 
     return -1; 

    var as = a.get('seconds'); 
    var bs = b.get('seconds'); 
    if(as > bs) 
     return -1; 
    if(bs < as) 
     return 1; 

    return 0; 
} 

如果你有骨气的旧版本不理解这两个参数的comparator功能,那么你”我们必须升级或想出一种方法来将completeseconds合并成一个单独的排序键,这将与Underscore's sortBy正确排序。

+0

不错。这个例子非常有帮助。再次感谢穆。 – jmk2142