使用下划线根据日期对集合进行排序

时间:2012-03-02 21:43:39

标签: backbone.js underscore.js

我有一个骨干集合,其中包含一系列与其关联的日期属性的模型。我想根据他们的日期对它们进行排序。所以最新的日期首先等等。 什么是最好的解决方法。

日期的格式如下,这是一个基本的日期对象。日期{Mon Mar 05 2012 23:30:00 GMT-0500(EST)}

由于

2 个答案:

答案 0 :(得分:36)

您有Date对象,因此您可以使用getTime将它们转换为数字,然后取消这些数字以获得最新的日期。如果你想保持你的收藏品排序,那么比较像这样:

C = Backbone.Collection.extend({
    //...
    comparator: function(m) {
        return -m.get('date').getTime();
    }
});

会做到这一点。演示(请打开你的控制台):http://jsfiddle.net/ambiguous/htcyh/

Backbone collection include下划线的sortBy所以你可以进行一次性排序:

var sorted = c.sortBy(function(m) { return -m.get('date').getTime() });

演示:http://jsfiddle.net/ambiguous/FF5FP/

或者您可以使用toArray获取正常的JavaScript数组并使用标准sort而不使用getTime

var sorted = c.toArray().sort(function(a, b) {
    a = a.get('date');
    b = b.get('date');
    if(a > b)
        return -1;
    if(a < b)
        return 1;
    return 0;
});

演示:http://jsfiddle.net/ambiguous/QRmJ4/

答案 1 :(得分:3)

如果你有日期信息的字符串,你可以....

C = Backbone.Collection.extend({
///...
    comparator: function(m) {
        return -Date.parse(m.get('datestring'));
    }
});
相关问题