如何将数字从大到小排序?

huangapple go评论210阅读模式
英文:

How to sort numbers from largest to smallest?

问题

I'm trying to sort numbers from largest to smallest, but I didn't manage to do it.

My code sorted numbers with 5 digits perfectly but not the rest.

here is an example:

The result should be:

I don't understand why it doesn't sort everything at once?

template

<ng-container *ngFor="let transfer of transferResponse.PRE">
<ng-container *ngFor="let preptf of transfer.PREPTF">

...

<a [routerLink]="['/transfers/customer-transfer-details/' + preptf.NUM]">{{preptf.NUM }}

...


interface

export interface TransferResponse extends ApiResponse {
PRE: Transfer[];
}

export interface Transfer {
DEPO: number;
CLER: string;
INTITULE1: string;
PHONE: string;
PREPTF: {
LABEL: string;
TYPE: string;
QUANTITE: number;
STATUT: number;
NUM: number;
ISIN: string;
STATUT_LIB: string;
REF_RBC: string;
}[];
}

composent

export class OverviewTransfersComponent implements OnInit, OnDestroy {
private unsubscribe$ = new Subject < void > ();
currentAgency: any;
transferResponse: TransferResponse;

constructor(
private service: OverviewTransfersService,
private store: Store,
private modalService: BsModalService,
private router: Router

) {}

ngOnInit(): void {
this.currentAgency = this store.selectSnapshot(AgencyState.currentAgency);
if (this.currentAgency) {
this.OverviewTransfers();
}
}

ngOnDestroy(): void {
this.unsubscribe$.next();
this.unsubscribe$.complete();
}

OverviewTransfers(): void {
console.log('Before the request service.OverviewTransfers()');
this.service.OverviewTransfers().pipe(
takeUntil(this.unsubscribe$)
).subscribe(res => {
console.log('Response service.OverviewTransfers()', res);
if (res.RETURNCODE === ApiResponseCodeEnum.Ok) {
const transferResponse = res as TransferResponse;
console.log('Before sorting', transferResponse);
transferResponse.PRE.forEach(transfer => {
transfer.PREPTF.sort((a, b) => {
return b.NUM - a.NUM;
});
});
console.log('After sorting', transferResponse);
this.transferResponse = transferResponse;
}
});
}

}

console.log

英文:

I'm trying to sort numbers from largest to smallest, but I didn't manage to do it.

My code sorted numbers with 5 digits perfectly but not the rest.

here is an example:

  1. 15366
  2. 13070
  3. 13069
  4. 13068
  5. 13067
  6. 13066
  7. 13065
  8. 13064
  9. 313883
  10. 313880
  11. 313878
  12. 313876
  13. 313874
  14. 313872
  15. 313870
  16. 313869
  17. 313868

如何将数字从大到小排序?

The result should be:

  1. 313883
  2. 313880
  3. 313878
  4. 313876
  5. 313874
  6. 313872
  7. 313870
  8. 313869
  9. 313868
  10. 15366
  11. 13070
  12. 13069
  13. 13068
  14. 13067
  15. 13066
  16. 13065
  17. 13064

I don't understand why it doesn't sort everything at once?

template

  1. &lt;ng-container *ngFor=&quot;let transfer of transferResponse.PRE&quot;&gt;
  2. &lt;ng-container *ngFor=&quot;let preptf of transfer.PREPTF&quot;&gt;
  3. &lt;tr&gt;
  4. ...
  5. &lt;td class=&quot;text-center&quot;&gt;
  6. &lt;a [routerLink]=&quot;[&#39;/transfers/customer-transfer-details/&#39; + preptf.NUM]&quot;&gt;{{preptf.NUM }} &lt;/a&gt;
  7. &lt;/td&gt;
  8. ...
  9. &lt;/tr&gt;
  10. &lt;/ng-container&gt;
  11. &lt;/ng-container&gt;

interface

  1. export interface TransferResponse extends ApiResponse {
  2. PRE: Transfer[];
  3. }
  4. export interface Transfer {
  5. DEPO: number;
  6. CLER: string;
  7. INTITULE1: string;
  8. PHONE: string;
  9. PREPTF: {
  10. LABEL: string;
  11. TYPE: string;
  12. QUANTITE: number;
  13. STATUT: number;
  14. NUM: number;
  15. ISIN: string;
  16. STATUT_LIB: string;
  17. REF_RBC: string;
  18. }[];
  19. }

composent

  1. export class OverviewTransfersComponent implements OnInit, OnDestroy {
  2. private unsubscribe$ = new Subject &lt; void &gt; ();
  3. currentAgency: any;
  4. transferResponse: TransferResponse;
  5. constructor(
  6. private service: OverviewTransfersService,
  7. private store: Store,
  8. private modalService: BsModalService,
  9. private router: Router
  10. ) {}
  11. ngOnInit(): void {
  12. this.currentAgency = this.store.selectSnapshot(AgencyState.currentAgency);
  13. if (this.currentAgency) {
  14. this.OverviewTransfers();
  15. }
  16. }
  17. ngOnDestroy(): void {
  18. this.unsubscribe$.next();
  19. this.unsubscribe$.complete();
  20. }
  21. OverviewTransfers(): void {
  22. console.log(&#39;Before the request service.OverviewTransfers()&#39;);
  23. this.service.OverviewTransfers().pipe(
  24. takeUntil(this.unsubscribe$)
  25. ).subscribe(res =&gt; {
  26. console.log(&#39;Response service.OverviewTransfers()&#39;, res);
  27. if (res.RETURNCODE === ApiResponseCodeEnum.Ok) {
  28. const transferResponse = res as TransferResponse;
  29. console.log(&#39;Before sorting&#39;, transferResponse);
  30. transferResponse.PRE.forEach(transfer =&gt; {
  31. transfer.PREPTF.sort((a, b) =&gt; {
  32. return b.NUM - a.NUM;
  33. });
  34. });
  35. console.log(&#39;After sorting&#39;, transferResponse);
  36. this.transferResponse = transferResponse;
  37. }
  38. });
  39. }
  40. }

console.log

如何将数字从大到小排序?

Response service.OverviewTransfers()

如何将数字从大到小排序?

Before sorting service.OverviewTransfers()

如何将数字从大到小排序?

After sorting service.OverviewTransfers()

如何将数字从大到小排序?

Thank you in advance for your help.

答案1

得分: 1

这不起作用,因为您正在对一个数组内部的数组进行排序。

首先,您有一个TransferResponse数组,您正在迭代以对子数组PREPTF进行排序。

如果您想这样做,您需要将所有数字重新分组到一个单一的数组中,然后对它们进行排序。

英文:

It does not work because you are sorting an array inside an array.

First you have an array of TransferResponse, on which you are iterating to sort the sub array PREPTF.

If you want to do that, you will need to regroup all the numbers in a single array and then sort them.

huangapple
  • 本文由 发表于 2023年3月15日 17:58:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/75743110.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定