2017-03-28 7 views
0

私はこの機能を持っている:ほぼ同じことをしている複数のif文でこの関数を処理するより良い方法はありますか?

private addAdditionalResults(resultsToAdd: any) { 
    if(!isNaN(resultsToAdd.xx) && this.x.length > 0) 
     this.x.unshift(resultsToAdd.xx); 
    if(!isNaN(resultsToAdd.yy) && this.y.length > 0) 
     this.y.unshift(resultsToAdd.yy); 
    if(!isNaN(resultsToAdd.zz) && this.z.length > 0) 
     this.z.unshift(resultsToAdd.zz); 
} 

X、Y、Zは、数字の配列です。 resultsToAddは変数xx、yy、zzを持つオブジェクトで、NaNとは異なるものにすることができます。このコードをもっと美しくするにはどうしたらいいですか?これらのif文はほとんど同じことをしています。あなたが事前にキーを知っているし、彼らはパターンに従っている場合

+2

もしあなたの配列 '自分の価値観とは無関係であるz' X '、' y'と '' resultsToAdd.'/'xx' /' yy'/'zz'は、ありません、反復処理する方法はありませんそれらの上に。あなたは 'if'文を' unshift'にする関数を作成することもできますが、それを3回呼び出さなければなりません – Ksyqo

+0

resultsToAddは特定のインターフェースを持っていますか、それとも本当ですか? – toskv

+1

これは私には良く見えますが、この種のプルリクエストに問題はありません。 –

答えて

0

。しかし、これはループのためにプログラムの応答に影響します。

results = array(resultsToAdd.xx, resultsToAdd.yy, resultsToAdd.zz); 
numbers = array(this.x, this.y, this.z); 

for(i = 0; i < results.length; i++){ 
    if(!isNaN(results[i]) && numbers[i] > 0) 
     numbers[i].unshift(results[i]); 
} 
+0

ありがとう、@ joshua-j-wilborn、これは私が探していたものです。 – KamilG

+0

よろしくお願いします!^-^@ KamilG – Subgeo

0

、次の方法でそれを短縮することができます:あなたが関数内の配列と変数を作成し、それらを反復処理することができます

var variables = ['x','y','z']; 
var that = this; 
for (var key in variables) { 
    if (!isNaN(resultsToAdd[key + key]) && that[key].length > 0) { 
     that[key].unshift(resultsToAdd[key + key]) 
    } 
} 
関連する問題