В таких сценариях вы можете использовать sortBy
Pipe
.Ниже приведен код, который поможет вам.Приведенный ниже код может обрабатывать массивы numbers, string, objects
. Вы можете передать ключ, к которому необходимо применить сортировку.Также вы можете сортировать в обратном порядке, если требуется.
Также таким образом вам не нужно изменять ваши данные и переназначать.Труба и угол будут заботиться о сортировке на основе переданных входов, и то же самое будет отображаться в пользовательском интерфейсе.И вы можете использовать этот канал в своем коде.
import {
Pipe,
PipeTransform
} from "@angular/core";
@Pipe({
name: "sortBy"
})
export class ArraySortByPipe implements PipeTransform {
public transform(array: any[], reverse: boolean = false, prop ? : string) {
if (!Array.isArray(array)) {
return array;
}
if (array.length) {
let sortedArray: any[];
if (typeof array[0] === "string") {
sortedArray = array.sort();
}
if (typeof array[0] === "number") {
sortedArray = array.sort((a, b) => a - b);
}
if (typeof array[0] === "object" && prop) {
sortedArray = array.sort((a, b) => a[prop].toString().localeCompare(b[prop].toString()));
}
return !reverse ? sortedArray : sortedArray.reverse();
}
return array;
}
}
Надеюсь, это поможет :).Дайте мне знать, если у вас все еще есть проблемы.