如何在 Angular 2 自定义管道中对版本号进行排序?
How to sort version number in Angular 2 custom pipe?
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;
}
}
如果我们有这样的数组:
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));
}
请注意:您不需要为已经修饰 @Component
、@NgModule
、@Directive
或 [=] 的 类 使用 @Injectable
17=]装饰器。
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;
}
}
如果我们有这样的数组:
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));
}
请注意:您不需要为已经修饰 @Component
、@NgModule
、@Directive
或 [=] 的 类 使用 @Injectable
17=]装饰器。