2017-12-03 11 views
0

私は、ユーザーデータのサブセットを洗練されたデータセットのオブジェクトにマッピングしています。マップ内では、変数がnullか未定義かどうかをチェックし、そうであればこの変数をプレースホルダの値に設定します。Typescript - マップ内に条件がある場合

私が直面している問題は、マップ内のifステートメントを宣言するとエラーが発生しますが、マップにはパラメータとしてインデックスを含めることができますが、どのように機能ステートメントで機能を使用できますか?すべての洞察力が最も感謝します。

return this.UserService.search(url) 
.map((data) => { 
    console.log(data); 
    data.result = <any> data.result.map((user, index) => ({ 
     // if statement causing error here 
     if(user.name === null || user.name === undefined){ 
      // error with this if condition 
     }, 
     id: user.id, 
     name: user.name, 
     type: user.type, 
     password: user.password, 
    })); 
    return data; 
}).map(data => ({ 
    meta: { totalItems: data.size }, 
    data: data.result, 
})); 
+0

どのようなエラーがありますか?そしてあなたは内側の地図の内側から戻ることはありません。 – Carcigenicate

+0

もちろん、マッピング関数内で 'if'文を使うことができます。いくつかのサンプル入力と希望する出力を提供してください。そうでなければ、あなたがここで何をしようとしているのかがはっきりしません。 – janos

+0

元の記事のコードをご覧ください。 {id name typeとpassword}のデータセットを返そうとしましたが、idを設定する前にまずtypeの値を確認したいのです。 – zo0

答えて

1

あなたは戻り値の型として、オブジェクトリテラルを使用しようとしているが、当然、ifの文(または任意のステートメント)は、オブジェクトリテラル構文の内側にすることはできません。

代わりに、中括弧も使用する関数本体を定義し、明示的なreturn文でコードを内部に配置します。

// Starts function body instead of single expression-v 
data.result = <any> data.result.map((user, index) => { 

    if (some_condition) { 
     return "some value"; // The object? 
    } else { 
     return "other value"; // A different object? 
    } 
    /* 
    // I assume these are to be used in the object you return 
    id: user.id, 
    name: user.name, 
    type: user.type, 
    password: user.password, 
    */ 
}); 
関連する問題