我在AgGrid中有一个带有20K +记录的JSON日期列。我使用日期比较器来排序日期。下面是否有更好的方法来排序这样的日期类型,因为我在对大量数据集进行排序和过滤时,我的应用程序经历了缓慢。
排序
comparator: function (date1, date2) {
var date1Number = fnDateToComparableNumber(moment(date1).toDate());
var date2Number = fnDateToComparableNumber(moment(date2).toDate());
if ((date1Number === null || isNaN(date1Number)) && (date2Number === null || isNaN(date2Number))) {
return 0;
}
if (date1Number === null || isNaN(date1Number)) {
return -1;
}
if (date2Number === null || isNaN(date2Number)) {
return 1;
}
return date1Number - date2Number;
}
过滤
filterParams: {
//applyButton: true,
clearButton: true,
// provide comparator function
comparator: function (filterLocalDateAtMidnight, cellValue) {
// We create a Date object for comparison against the filter date
if (cellValue == '') {
return 1;
}
var cellDate = moment(cellValue).toDate();
// Now that both parameters are Date objects, we can compare
if (cellDate < filterLocalDateAtMidnight) {
return -1;
} else if (cellDate > filterLocalDateAtMidnight) {
return 1;
} else {
return 0;
}
}
},
注意:
答案 0 :(得分:0)
至少按日期排序我有类似的问题。不要使用片刻来解析日期。这是减慢您正在使用的数据量的方法。而是使用Date():
comparator: function (date1, date2) {
var date1Number = fnDateToComparableNumber(Date(date1));
var date2Number = fnDateToComparableNumber(Date(date2));
if ((date1Number === null || isNaN(date1Number)) && (date2Number === null || isNaN(date2Number))) {
return 0;
}
if (date1Number === null || isNaN(date1Number)) {
return -1;
}
if (date2Number === null || isNaN(date2Number)) {
return 1;
}
return date1Number - date2Number;
}
也许您需要手动解析日期,但仍然比使用时刻更快。