Javascript 如何按键对对象数组排序?
我试过这个方法:Javascript 如何按键对对象数组排序?,javascript,angular,typescript,Javascript,Angular,Typescript,我试过这个方法: if (field == 'age') { if (this.sortedAge) { this.fltUsers.sort(function (a, b) { if (b.totalHours > a.totalHours) { return 1; } }); this.sortedAge = false; } else {
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;
}
});
}
}
if(字段=='age'){
如果(本文件){
this.fltUsers.sort(函数(a,b){
如果(b.总小时数>a.总小时数){
返回1;
}
});
this.sortedAge=false;
}否则{
this.sortedAge=true;
this.fltUsers.sort(函数(a,b){
如果(b.总小时数
所以我有一个对象数组。每个对象都有属性:totalHours
单击后,我需要按desc/asc此字段totalHours
订购此阵列
我的代码无效。此代码必须对数组进行排序
function compare(a,b) {
if (b.totalHours < a.totalHours)
return -1;
if (b.totalHours > a.totalHours)
return 1;
return 0;
}
objects.sort(compare);
功能比较(a、b){
如果(b.总小时数a.总小时数)
返回1;
返回0;
}
对象。排序(比较);
此代码必须对数组进行排序
function compare(a,b) {
if (b.totalHours < a.totalHours)
return -1;
if (b.totalHours > a.totalHours)
return 1;
return 0;
}
objects.sort(compare);
功能比较(a、b){
如果(b.总小时数a.总小时数)
返回1;
返回0;
}
对象。排序(比较);
对于像您这样的简单比较器,我通常遵循1行规则,因此我会这样修改它
this.fltUsers.sort((a,b) => b.totalHours < a.totalHours ? 1 : -1);
this.fltUsers.sort((a,b)=>b.totalHours
您至少需要返回
1
和-1
,这样比较器逻辑才能工作。对于像您这样的简单比较器,我通常遵循单线规则,所以我会这样修改它
this.fltUsers.sort((a,b) => b.totalHours < a.totalHours ? 1 : -1);
this.fltUsers.sort((a,b)=>b.totalHours
您至少需要返回
1
和-1
,以便比较器逻辑可以工作。如果不实际查看阵列,很难判断这一点,它也很可能是重复的。无论如何,只有在发生某些情况时才返回,根据比较情况,您应该返回1
、-1
或0
。this.fltUsers.sort((a,b)=>a.totalHours-b.totalHours)
如果不实际查看数组,很难判断,它也很可能是重复的。无论如何,只有在发生某些情况时才返回,根据比较情况,应该返回1
、-1
或0
。this.fltUsers.sort((a,b)=>a.totalHours-b.totalHours)