2017-09-21 6 views
2

で声明:別の方法は書くことであれば、私は私のJavaScriptコードを縮小する過程で午前とこの巨大なif文書くためのより多くのエレガン方法がある場合、私は思っていたのjavascript

if (operator_list == "=" || operator_list == "<>" || operator_list == ">" || operator_list == "<" || operator_list == ">=" || operator_list == "<=") 

任意のアイデアは?

+3

演算子を配列に格納し、その配列に 'operator_list'が存在するかどうかを確認します。 – Teemu

+1

'indexOf'はここで便利です –

答えて

4

使用配列の要素の一つであるかどうかを確認し、それがoperator_list

が含まれているかどうかをチェック許容オペレーター
var arr = [ "=", "<=" ]; 

の配列を作ることができます
let checkArr = ["=", "<>", ">", "<", ">=", "<="]; 
if (checkArr.includes(operator_list)) {} 
+0

優雅な解決策。ありがとう – user1919

0

あなたはその後、operatorが配列

arr.indexOf(operator_list) != -1 //will return true if operator_list is in arr 
2

通常の表情それのために。

function test(s) { 
 
    return /^(=|<>|>|<|>=|<=)$/.test(s); 
 
} 
 

 
console.log(["=", "<>", ">", "<", ">=", "<=", 'foo', '<a='].map(test));

1

私は、関数に式をリファクタリングし、それに良い名前を与えること、それがよりエレガントになるだろうと思う:

if (isValidOperator(operator_list)) { 
// Do something 
} 

function isValidOperator(operator) { 
    return operator == "=" || operator == "<>" || operator == ">" || operator == "<" || operator == ">=" || operator == "<="; 
} 

あなたのコードの読者に説明し、この道それは何を意味するのか。後の段階で誰かが関数をリファクタリングして理解しやすくすることができます。

その他の読み取り:

0

in-array testを検討し、次のように:

var arrOps = ['=','<>','>','<','>=','<=']; 
 

 
var op = '='; 
 

 
console.log ("Valid operator? ", arrOps.indexOf(op) != -1);

配列のindexOfメソッドを使用する利点は、インクルードメソッドよりもブラウザの互換性が高いことです。 hereおよびhereを参照してください。

関連する問題