我正在尝试对对象数组进行排序。对象有date属性。我需要按升序或降序对数组进行排序。我试试这样
https://jsfiddle.net/rxaLutgn/1/
function sort_by(field, reverse, primer) {
var key = primer ?
function (x) {
return primer(x[field])
} :
function (x) {
return x[field]
};
reverse = !reverse ? 1 : -1;
return function (a, b) {
return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
}
}
它没有按升序或降序对数组进行排序。
答案 0 :(得分:3)
答案 1 :(得分:0)
如果您期望所有日期,该功能正常。查看您的数据有一些无效日期,如“ - ”
如果您无法修改数据或期望确定日期,那么您需要修改您的功能以执行此类操作(或以某种方式按照您的喜好处理它)
function sort_by(field, reverse, primer) {
var key = primer ?
function (x) {
return primer(x[field])
} :
function (x) {
return x[field]
};
reverse = !reverse ? 1 : -1;
return function (a, b) {
a = new Date(key(a))=='Invalid Date'?0:new Date(key(a));
b = new Date(key(b))=='Invalid Date'?0:new Date(key(b));
return reverse * (a-b);
}
}
@void的所有道具都是他的回答。我刚刚更新,因为有一个重复的问题提出来,我没有代表对这个问题发表评论或者对这篇文章的@void的回答