1

Javascriptを:削減循環的複雑度

function(response) { 
 
    if (response.bMap && SelType === 'q') { 
 
    setDefaultQQ(response.bMap); 
 
    } else if (response.bMap && SelType === 'a') { 
 
    setDefaultAA(response.bMap); 
 
    } else if (response.bMap && SelType === 'o') { 
 
    setDefaultOO(response.bMap); 
 
    } else if (response.mMap && SelType === 'm') { 
 
    setDefaultMM(response.mMap); 
 
    } else if (response.bMap && SelType === 'p') { 
 
    setDefaultPP(response.bMap); 
 
    } else if (response.eMap && SelType === 'e') { 
 
    setDefaultEE(response.eMap); 
 
    } else { 
 
    setDefaultData(); 
 
    showModal(); 
 
    } 
 
}

良い方法は本当にありません短い形式と読みやすく

+0

をマッピングするためにオブジェクトを使用することができますが、この質問はあなたのプロフィールを少しだけを競合しているようです。 )。 – Teemu

答えて

0

にこの条件文を削減する方法はありますが、これはどう

eval("setDefault"+SelType.toUpperCase()+SelType.toUpperCase()+"(response."+SelType.toUpperCase()+"Map);");

確かに最良の方法ではありません。

+0

これはこのようにすることができるのが面白いですが、本当に(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects)する必要がない限り、 'eval()'を使わないでください。/eval#Don't_use_eval_newlessly!)。あなたはコードを所有していて、@ charlietflの答えはそれが必要でないことを証明します:) – atwright147

+0

私はそれを動的にしたいと思っていました。いつも別の 'SelType'を追加しても、関数マッピングなどのために' SelType'キーを更新する必要はありません。 – kawadhiya21

+0

kawadhiya21意味はありますが、ここでもevalを使用することはできません。 –

2

はSelType特定のメソッドを正確に関連していない

var methods = { 
    'a': setDefaultQQ, 
    'o': setDefaultOO, 
    'm': setDefaultMM, 
    ....  
} 

if(response.bMap && methods[SelType]){ 
    methods[SelType](response.bMap); 
}else{ 
    setDefaultData(); 
    showModal(); 
} 
+0

あなたは欠けています私の他のキーはeMapとMmap –

+0

ですので、追加のロジックが必要になります。私の推測では、1つのメソッドを使用して引数として応答オブジェクトを渡してそこにすべてを渡すことができると思います – charlietfl

+0

はい、私は追加のロジックを追加していましたが、これはメソッドです。論理を分離するには? –

関連する問題