使用日期和优先级对主干进行排序
Sorting Backbone.Collection using date and priority
好的,我有一个集合,里面装满了某个模型的对象,这个模型包含一个日期和一个优先级,我希望它按日期排序,然后按优先级排序,我目前是这样实现的:
App.Collections.Tasks = Backbone.Collection.extend({
model: App.Models.Task,
comparator: function(model)
{
return model.get("date") + model.get("priority");
}
});
这是我的输出:
Get to the party Edit Delete 1 Fri Feb 1
Get to the party Edit Delete 2 Mon Jan 28
Go to the store Edit Delete 4 Mon Jan 28
Go to the mall Edit Delete 3 Tue Jan 29
Get to the party Edit Delete 3 Tue Jan 29
Get to the party Edit Delete 5 Tue Jan 29
Get to the party Edit Delete 2 Wed Jan 30
Get to work Edit Delete 5 Wed Jan 30
我希望较早的日期始终位于顶部,因此二月的日期应该是最后一个,我该如何实现这一点?
谢谢!
你可以这样做:
comparator: function(model1, model2) {
return (model1.get("date") + model1.get("priority")) -
(model2.get("date") + model2.get("priority"));
}
文档声明,返回值应该是 -1、0 或 1,但这在以前不是强制性的,任何值都可以解决问题。
编辑
comparator: function(model1, model2) {
var comp = (model1.get("date") + model1.get("priority")) -
(model2.get("date") + model2.get("priority"));
if (comp < 0) {
return -1;
} else if (comp > 0) {
return 1;
} else {
return 0;
}
}
现在代码完全遵循提到的规范。如果这不能解决问题,那么问题不在比较器中。
编辑
傻我。我假设你正在date
存储一个 unix 时间,但显然你没有。减去字符串得到 NaN,因此实际上没有进行排序。所以你现在需要做的就是date
转换为 unix 时间格式(或至少类似的东西),然后它应该可以工作了。
相关文章:
- 如何合并不同集合的游标并按日期排序
- 如何在智能表中按日期对项目进行排序
- 在d3.js中对x轴上的日期进行排序
- 按ISO 8601日期对数组进行排序
- 如何按日期对Arraylist进行排序,然后将其传递给JSP
- 不带插件的JavaScript排序日期
- 以角度 js 格式排序日期
- 在MongoDB中保存和排序日期
- JS对象排序日期排序
- 排序日期不返回已排序的日期
- 数组排序日期未按预期工作
- 在jquery中验证和排序日期
- 有没有更好的智能排序日期的方法?
- 在Javascript中排序日期
- jQuery数据表-按隐藏列排序日期
- 如何排序日期和字符串在同一列在jquery插件有文件jquery. datatable .js
- 在JavaScript中排序日期字符串数组的最佳方式
- 谷歌自定义搜索排序日期范围标准不工作
- 排序日期对象数组错误javascript
- 猫鼬聚集而不是排序日期