我有一个 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>
我可能做错了什么?
您可以创建一个比较函数,然后将其传递给
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()