如何按日期范围和创建日期对对象数组进行排序?

时间:2015-06-09 01:46:14

标签: javascript arrays sorting date underscore.js

我正在构建一个任务列表系统,但就我而言,我无法找到一种方法来对具有开始和结束日期的对象数组进行排序。

我希望按任务的创建日期默认任务列表,并首先处理最旧的任务。

我不想开始任务,直到它至少在开始日期。

我想在结束日期前一天完成一项任务。

使用underscorejs很容易按开始日期对日期排序:

_.sortBy(arr, function(task) { 
    return task.start.dateTime; 
})

但是我如何考虑上下文开始日期和结束日期,同时仍然试图根据创建日期对其进行基本排序?

1 个答案:

答案 0 :(得分:0)

阅读http://underscorejs.org/提供的doco sortBy表示它是一种稳定的排序算法(意味着如果值相等,它不会在多个排序上抛出顺序。请参阅http://en.wikipedia.org/wiki/Sorting_algorithm),这样您就可以安全地链接排序上下文:

var sortedArray = _(arr).chain()
.sortBy(function(task) {
    return task.created.dateTime;
})
.sortBy(function(task) {
    return task.start.dateTime;
})
.sortBy(function(task) {
    return task.end.dateTime;
})
.value();

你试过吗?你能提供一些样本数据来测试吗?