2017-08-19 10 views
0

角度4 - カスタムパイプを使用して配列のバージョン番号文字列を並べ替える方法は?Angular 2カスタムパイプでバージョン番号を並べ替える方法は?

バージョン番号がv.9.1、v.9.2、v10.0のjsonファイルがあります。私はカスタムパイプを使ってソートを試みましたが、v.10.0、v.9.2、v.9.1ではなく、v.9.2、v.9.1、v.10.0としてソートされました。文字列として扱われているようです。ここで

は、私はパイプにしようとしたものです:

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

我々は持っている場合は、配列のように:

transform(array: Array<any>): Array<any> { 
    if(!array) { 
     return null; 
    } 
    return array.sort((a, b) => b.slice(2) - a.slice(2)); 
} 

arr = ['v.9.1', 'v.9.2', 'v.10.0'] 

はその後transform方法は次のようになりますPlunker Example

ちょうどノート:あなたはすでに@Component@NgModule@Directiveまたは@Pipeデコレータを飾ったクラスに対して@Injectableを使用する必要はありません。

+0

申し訳ありませんが、私のコードで動作しませんでした。私はこのようなjsonファイルからデータを抽出しています - –

+0

@farialmahmud私のサンプルにjsonファイルを追加しましたhttps://plnkr.co/edit/zqpkih1AaRAgySyklOrZ?p=previewそこに再現できますか? – yurzui

+0

[ { "バージョン": "v.9.1"、 "日付": "2016年8月11日"、 "リンク": "9-1/setup.zip" }、{ 「バージョン":" v9.0 "、 " date ":" 05/08/2016 "、 " link ":" 9-0/setup.zip " }、 { " version ":" v8.1 " 、 "日付": "2015年2月11日"、 "リンク": "8-1/setup.zip" }、 { "バージョン": "v9.2の"、 "日付": "20/03/2017"、 "link": "9-2/setup.zip" }、{ "バージョン": "V10.0"、 "日付": "20/03/2017"、 "リンク": "10.0/setup.zip" } ] –

関連する問題