这样的东西能满足你的需求吗?
function fillInEmptyDates(startDate, endDate, data) {
var dateToCheck = moment(startDate);
var end = moment(endDate);
var finished = false;
while (!finished) {
if (!Enumerable.from(data).any(function (x) { return dateToCheck.diff(x.YourEntityDateField, 'days') === 0; })) {
var newEntity = { "YourEntityDateField": dateToCheck.clone().toDate() };
data.unshift(newEntity);
};
dateToCheck.add(1, 'days');
if (dateToCheck.diff(end, 'days') === 0) {
finished = true;
}
}
}
被称为...
fillInEmptyDates(new Date(2014, 6, 30), new Date(2014, 10, 25), $scope.gridOptions.data);
您可以将第一个日期作为当前数据的最小值,将结束日期作为最大值,或者根据您的需要进行调整。
请注意,我使用MomentJS进行日期操作,使用LinqJS来查看数据的日期。我敢肯定,如果您愿意,将有一种简单的方法可以在不使用 LinqJS 的情况下循环遍历数据。(我是 JavaScript 新手,发现自己迷上了我以前在 C# 中做的 LINQ 东西。)
您在网格选项中指定的排序应适用于新创建的行。
(旁注:您可能必须使用时区才能准确获得所需的值。如果您看到确实有数据的日期重复,那么可能是由于这个原因。)