我试过这个方法:
if (field == 'age') {
if (this.sortedAge) {
this.fltUsers.sort(function (a, b) {
if (b.totalHours > a.totalHours) {
return 1;
}
});
this.sortedAge = false;
} else {
this.sortedAge = true;
this.fltUsers.sort(function (a, b) {
if (b.totalHours < a.totalHours) {
return 1;
}
});
}
}
所以我有一些对象。每个对象都有属性:totalHours
。
点击后,我需要通过desc / asc此字段totalHours
来订购此数组。
我的代码不起作用。
答案 0 :(得分:4)
我通常遵循像你这样的简单比较器的1行规则,所以我会像这样修改它
this.fltUsers.sort((a,b) => b.totalHours < a.totalHours ? 1 : -1);
您需要至少返回1
和-1
,以便比较器逻辑可以正常工作。
答案 1 :(得分:2)
此代码必须对数组进行排序。
function compare(a,b) {
if (b.totalHours < a.totalHours)
return -1;
if (b.totalHours > a.totalHours)
return 1;
return 0;
}
objects.sort(compare);