Как отсортировать номер версии в пользовательском канале Angular 2?
Angular 4 - как отсортировать строку номера версии в массиве с помощью пользовательского канала?
У меня есть файл JSON с номером версии, как v.9.1, v.9.2, v10.0. Я пробовал сортировку с использованием пользовательского канала, но сортировал как v.9.2, v.9.1, v.10.0, а не v.10.0, v.9.2, v.9.1. Похоже, что это рассматривается как строка.
Вот что я попробовал в трубе:
import {Injectable, PipeTransform, Pipe} from '@angular/core';
import { P11dComponent } from './p11d.component';
@Pipe({
name: 'sortByVersion'
})
@Injectable()
export class SortVersionPipe implements PipeTransform{
transform(array: Array<any>, args: string): Array<any> {
if (array !== undefined) {
array.sort((a: any, b: any) => {
if ( parseFloat(a[args.slice(3,4)]) < parseFloat(b[args.slice(3.4)]) ){
return 1;
} else if ( parseFloat(a[args.slice(3,4)]) < parseFloat(b[args.slice(3.4)]) ) {
return -1;
} else {
return 0;
}
});
}
return array;
}
}
1 ответ
Решение
Если у нас есть массив, как:
arr = ['v.9.1', 'v.9.2', 'v.10.0']
затем transform
метод может выглядеть так:
transform(array: Array<any>): Array<any> {
if(!array) {
return null;
}
return array.sort((a, b) => b.slice(2) - a.slice(2));
}
Просто примечание: вам не нужно использовать @Injectable
для классов, которые уже украсили @Component
, @NgModule
, @Directive
или же @Pipe
декоратор.