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)