Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对Angular 2自定义管道中的版本号进行排序?_Angular_Sorting_Angular2 Custom Pipes - Fatal编程技术网

如何对Angular 2自定义管道中的版本号进行排序?

如何对Angular 2自定义管道中的版本号进行排序?,angular,sorting,angular2-custom-pipes,Angular,Sorting,Angular2 Custom Pipes,角度4-如何使用自定义管道对数组中的版本号字符串进行排序 我有一个版本号为v.9.1、v.9.2、v10.0的json文件。我尝试使用自定义管道进行排序,但排序为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 '.

角度4-如何使用自定义管道对数组中的版本号字符串进行排序

我有一个版本号为v.9.1、v.9.2、v10.0的json文件。我尝试使用自定义管道进行排序,但排序为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;
}
}
从'@angular/core'导入{Injectable,PipeTransform,Pipe};
从“./p11d.component”导入{P11dComponent};
@烟斗({
名称:“sortByVersion”
})
@可注射()
导出类SortVersionPipe实现PipeTransform{
转换(数组:数组,参数:字符串):数组{
if(数组!==未定义){
array.sort((a:any,b:any)=>{
if(parseFloat(a[args.slice(3,4)])
如果我们有如下数组:

arr=['v.9.1','v.9.2','v.10.0']
然后,
transform
方法可以如下所示:

变换(数组:数组


注意:对于已经修饰了
@Component
@NgModule
@Directive
@Pipe
decorator的类,不需要使用
@Injectable

对不起,它在我的代码中不起作用。我正在从一个json文件中提取数据,就像这样-@farialmahmud我在我的示例中添加了json文件你能在那里复制吗?[{“版本”:“v.9.1”,“日期”:“08/11/2016”,“链接”:“9-1/setup.zip”},{“版本”:“v.9.0”,“日期”:“05/08/2016”,“链接”:“9-0/setup.zip”},{“版本”:“v8.1”,“日期”:“02/11/2015”,“链接”:“8-1/setup.zip”},{“版本”:“v9.2”,“日期”:“2017年3月20日”,“链接”:“9-2/setup.zip”},{“版本”:“v10.0”,“日期”:“2017年3月20日”,“链接”:“10.0/setup.zip”}]我通过接口在组件中获取此数据-导出接口IsometLink{version:string;date:date;link:string;}用于如下查看此内容{{someLink.version}我还需要对版本号进行排序,如v4.0.0.10、v4.0.0.15、v4.0.0.40等,我的排序如下。发布可能会发现它很有用。导出类SortVerPipe实现了PipeTransform{transform(数组:数组,args:string):数组{if(数组!==未定义){array.sort((a:any,b:any)=>{if(a.versionb.verision){return-1;}else{return 0;}}}}返回数组;}