我有一个对象数组存储在 中observableArray
,每个数组项都是 moment.js 日期的对象。
{startDate:momentObject, endDate:momentObject, cycle:null}
我需要计算两件事。一个是startDates之间的平均时间。我认为最简单的方法是计算数组中最早和最晚 startDates 之间的持续时间,并将其除以条目总数。
我还需要两个 startDates 之间的时间段。我想出的一个快速解决方案是这样的:
$.each(dateArray, function(index, item){
var previousItem = dateArray[index - 1];
if(previousItem){
// since these are moment objects, just use the diff method
return item.cycle = previousItem.startDate.diff(item.startDate, 'days');
}
return false;
});
但这需要observableArray
按升序排序。所以这是我的问题。
- 如何确保每次向其推送新项目时都对其进行
observableArray
强制排序? - 有没有更好的方法来计算
startDates
中间周期和中间周期之间的周期? - 也许,我可以在将项目添加到数组而不是循环时计算周期?