私は既存のプロジェクトに次のコードを書いています。Javascript:オブジェクトリテラル表記のindexOf
//selectedColumn is dynamic but will have part of the string
if(selectedColumn.indexOf(const.abc) > -1 || selectedColumn.indexOf(const.abcd) > -1) //selectedColumn can be bc, ab etc
{
//logic 1
}
if(selectedColumn.indexOf(const.xyz) > -1 || selectedColumn.indexOf(const.wxyz) > -1){ //selectedColumn can be xy, yz etc
//logic 2
}
//.. so on and so forth
他の場合は、この代わりにオブジェクトのリテラル表記を使用したいと思います。
var logicLookup = {
"???": function(){ //what should be the func name here
//logic 1
}
};
logicLookup[selectedColumn]()
オブジェクトリテラルの内部に関数名を入れるにはどうすればよいですか?私はオブジェクトリテラルの内部でindexOf
操作を行うことができないと信じています。
私はその関数に 'ab'のような名前をつけたら、ロジックを引き出すためにもう一度やり直す必要があります。
if(selectedColumn.indexOf(const.abc) > -1 || selectedColumn.indexOf(const.abcd) > -1)
{
logicLookup["ab"]()
}
私はこれを避けたい。
ご協力いただければ幸いです。このif..elseコードの匂い文に代わるものがあればいいよ。
使用しようとしているパターンは、部分一致と一致するものではなく、完全一致の場合にのみ有効です。 – Quentin
はい@クエンチン。 else文を削除するように書くための代替手段または最良の方法はありますか? –