2017-06-23 10 views
2

もっとエレガントな方法がありますか?エレガントな検索の場合

if (err.code === 'CONFLICT-GROUP-GENERAL' || 
    err.code === 'CONFLICT-USER-GENERAL' || 
    err.code === 'CONFLICT-FORM-GENERAL' || 
    err.code === 'CONFLICT-PROJECT-GENERAL' || 
    err.code === 'CONFLICT-TEMPLATE-GENERAL') {} 
+1

正しい解決策は、 '{} 'の間に何があるかによって少し異なります。 –

+1

私は[スイッチ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)を使用します。 – James

答えて

3

このトリックは、私にはよりエレガントなようです(アレイとindexOfを使用して):

var conflicts = ['CONFLICT-GROUP-GENERAL', 
        'CONFLICT-USER-GENERAL', 
        'CONFLICT-FORM-GENERAL', 
        'CONFLICT-PROJECT-GENERAL', 
        'CONFLICT-TEMPLATE-GENERAL']; 

if (conflicts.indexOf(err.code) !== -1) { 
    doSomething(); 
} 

あなたはES7を使用している場合、あなたはincludes()代わりのindexOfを使用することができます。これは、より多くの「表現力」になります。

var conflicts = ['CONFLICT-GROUP-GENERAL', 
        'CONFLICT-USER-GENERAL', 
        'CONFLICT-FORM-GENERAL', 
        'CONFLICT-PROJECT-GENERAL', 
        'CONFLICT-TEMPLATE-GENERAL']; 

if (conflicts.inclues(err.code)) { 
    doSomething(); 
} 

includes()ことは、すべてのブラウザでsuportedされることはありません。

EDIT:

別の方法:switchを使用します。この方法:err.codecaseで指定した文字列の1に等しい場合

switch (err.code) { 
    case 'CONFLICT-GROUP-GENERAL',: 
    case 'CONFLICT-USER-GENERAL',: 
    case 'CONFLICT-FORM-GENERAL',: 
    case 'CONFLICT-PROJECT-GENERAL',: 
    case 'CONFLICT-TEMPLATE-GENERAL': 
     doSomething(); 
     break; 
} 

上記のコードはdoSomething()機能を実行します。

6

私はすべてのコードで配列を持つほうが良いと、それは-1よりも大きいのですかどうかを確認するためにindexOfを使用します。

if (['CONFLICT-GROUP-GENERAL', 'CONFLICT-USER-GENERAL', 'CONFLICT-FORM-GENERAL', 'CONFLICT-PROJECT-GENERAL', 'CONFLICT-TEMPLATE-GENERAL'].indexOf(err.code) > -1) { 
} 
+2

または 'includes()' –

+0

@PranavCBalan古いブラウザではサポートされていませんか?とにかく新しいブラウザの場合は –

+1

) –

関連する問題