如何按键排序对象数组?

时间:2018-01-13 14:36:42

标签: 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 {

        this.sortedAge = true;
        this.fltUsers.sort(function (a, b) {
          if (b.totalHours < a.totalHours) {
            return 1;
          }
        });

      }
    }

所以我有一些对象。每个对象都有属性:totalHours

点击后,我需要通过desc / asc此字段totalHours来订购此数组。

我的代码不起作用。

2 个答案:

答案 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);