如何以角度10升序对列中的JSON数据进行排序

问题描述 投票:0回答:1

我有一个 JSON 响应,其 teamId 从 1 到 43

[{"teamId":"1"},{"teamId":"2"},{"teamId":"3"},{"teamId":"4"},{"teamId":"5"},{"teamId":"6"},{"teamId":"7"},{"teamId":"8"},{"teamId":"9"},{"teamId":"10"},{"teamId":"11"},{"teamId":"12"},{"teamId":"13"},{"teamId":"14"},{"teamId":"15"},{"teamId":"16"},{"teamId":"17"},{"teamId":"18"},{"teamId":"19"},{"teamId":"20"},{"teamId":"21"},{"teamId":"22"},{"teamId":"23"},{"teamId":"24"},{"teamId":"25"},{"teamId":"26"},{"teamId":"27"},{"teamId":"28"},{"teamId":"29"},{"teamId":"30"},{"teamId":"31"},{"teamId":"32"},{"teamId":"33"},{"teamId":"34"},{"teamId":"35"},{"teamId":"36"},{"teamId":"37"},{"teamId":"38"},{"teamId":"39"},{"teamId":"40"},{"teamId":"41"},{"teamId":"42"},{"teamId":"43"}]

从API中,数字排序得很好,但是当我尝试在角度10上显示它们时,它们最终混合在一起,尝试使用排序方法对数据进行排序,但没有运气,

到目前为止我所拥有的,component.ts

onSort({column, direction}: SortEvent) {
    this.sort = {column, direction};
    if (direction === '') {
      this.teams = this.teams;
    } else {
      this.teams = [...this.teams].sort((a, b) => {
        const res = compare(a[column], b[column]);
        return direction === 'asc' ? res : -res;
      });
    }
  }

在我的component.html中

  <tr>
                <th [sortable]="'teamId'" (sort)="onSort($event)"> Team Code
    </tr>

我可能做错了什么?

angular typescript
1个回答
0
投票

您可以创建一个比较函数,然后将其传递给

array.sort()
函数,在其中将对象的值相互比较。

array = [
    { teamId: '1' },
    { teamId: '5' },
    { teamId: '6' },
    { teamId: '7' },
    { teamId: '34' },
    { teamId: '35' },
    { teamId: '36' },
    { teamId: '37' },
    { teamId: '38' }
]

  sortArray(array: { teamId: string; }[]) {
    array.sort(this.compare);
  }

  compare( a, b ) {
    return a.teamId - b.teamId
  }

我创建了一个 stackblitz,您可以在其中测试功能:Stackblitz

有关 Array.sort 方法如何工作的更多信息,请参阅此处:Array.prototype.sort()

© www.soinside.com 2019 - 2024. All rights reserved.