2016-11-18 5 views
0

私はAngular 2アプリケーションでRxJS観測値を使用しています。従業員のリストを取得しようとしています。リストに追加されました。以下は、私のコードです:私はレコードをフィルタリングすることはできませんよパターンに基づいてRxJS観測値を使用してデータをフィルタリングする方法

getEmployees(): any { 
    return this.employeeService.get("http://localhost:9080/employees") 
       .map((employees: any) => employees.map((employee: any) => { 
        let empcode: string = employee.empcode; 
        if (empcode.lastIndexOf("MA") == -1) { 
         return { empText: empcode+ ' - ' + employee.empName, data: employee}; 
        } 
         return { empText: '', data : null}; 
       })); 
} 

、それが私に戻っているすべてのvalues.Iが、それはすべての値を返しているように、2つのreturn文を持っているが、私はそれらのいずれかを削除した場合、私が得ます次のエラー:

には最高の一般的なタイプは、リターン式の間に存在しない

Webサービスによって返されるJSONの形式は次のとおりです。

{ 
employeeCode: "EMPCT", 
employeeName: "Tom", 
role: "HR" 
} 

この場合、Webサービスから返されたレコードをフィルタリングする最良の方法は何かを教えてください。

答えて

1

なぜfilter機能を使用しないのですか?

getEmployees(): any { 
    return this.employeeService.get("http://localhost:9080/employees") 
       .map((employees: any) => items.filter((employee: any) => { 
        let empcode: string = employee.empcode; 
        return ((ifscode.lastIndexOf("MA") == -1); 
       })); 
} 

ifscodeの出所が不明です。とにかく、フィルターを使うべきです。さらに変換が必要な場合は、.map()操作をチェーンすることができます。

+0

「フィルタ機能を使用しないのはなぜですか?」もちろん、彼はすべきです。しかし 'Array'の' filter'ではありません。彼はむしろ 'Observable'のフィルターを使うべきです。 http://stackoverflow.com/a/40678593/2398593 – Maxime

+0

を参照してください。ここでは、配列は配列で構成されていることにのみ同意します。 RXフィルタは結果全体を通過またはブロックしますが、この場合は望ましい動作ではありません – Meir

+0

私の悪い、あなたは絶対に正しいです:) – Maxime

1
getEmployees(): any { 
    return this.employeeService.get("http://localhost:9080/employees") 
       .map((employees: any) => { 
        let filtered = employees.json().filter((employee) => { 
         let empcode: string = employee.empcode; 
         if (ifscode.lastIndexOf("MA") == -1) { 
         return true; 
         } else { 
         return false; 
         } 
        }); 
        return filtered; 
       })); 
} 
+0

真と偽の代わりにempcodeと従業員名を返したいと思います。マサチューセッツ州で終わると、私はその従業員を返すことはしません。あなたが提案したソリューションを使って、どうすればいいのか教えてください。 – Valla

+0

これで、APIから返される従業員の詳細がすべて取得されます。それを一度チェックし、可能であればAPIから得た回答で質問を更新してください。 – ranakrunal9

+0

APIから返されたサンプルjsonを更新しました。私はその形式でレコードを返します。質問では、私は上記の解決策でそれをどうやって行うことができるのか、データを返すようなフォーマットを述べました。 – Valla

関連する問題