0

これをよりきれいにする方法はありますか?

if ($("#Input").text === "A") { sOutput = "a"; lColor = "red"; }
if ($("#Input").text === "B") { sOutput = "b"; lColor = "orange"; }
if ($("#Input").text === "C") { sOutput = "c"; lColor = "yellow"; }
if ($("#Input").text === "D") { sOutput = "d"; lColor = "green"; }
if ($("#Input").text === "E") { sOutput = "e"; lColor = "blue"; }
if ($("#Input").text === "F") { sOutput = "f"; lColor = "violet"; }
...

&& と || を使用すると、実際のコードはさらに拡張されます。異なる変数間。しかし、各行は、探している「文字」と設定した変数を保存する同じ構文に従います。たくさんのifがあるのはもったいないです。

*コードは私の要点を説明するためのダミー コードです。

編集

ダミー コードは私の主張を説明していないので、ここに実際のサンプルを示します。

    if ($(".Fig_Main").hasClass("Active")) {
        sect_1 =  (($(".Fig_A").hasClass("Active")) && ($(".Fig_1").hasClass("Active"))) ? "Slide_A1"
              : (($(".Fig_A").hasClass("Active")) && ($(".Fig_B").hasClass("Active"))) ? "Slide_AB"
              : (($(".Fig_1").hasClass("Active")) && ($(".Fig_B").hasClass("Active"))) ? "Slide_1B"
              : (($(".Fig_1").hasClass("Active")) && ($(".Fig_3").hasClass("Active"))) ? "Slide_13"
              ...

このブロック (数行長い) を数回繰り返し、毎回異なる sec_# と結果の設定値 (Slide_XY) を設定します。

現在のすべての提案は大歓迎です。それを続けてください。

4

4 に答える 4

7

次のようなことができます。

var dic = {
  "a": "red",
  "b": "orange",
  "c": "yellow",
  "d": "green",
  "e": "blue",
  "f": "violet"
};

sOutput = $("#Input").text().toLowerCase();
lColor = dic[sOutput];
于 2012-08-02T02:03:36.963 に答える
2

オブジェクトリテラルを使用できます。

//extend the object as needed.
var obj = {
    'A': { sOutput:'a', lColor: 'red' },
    'B': { sOutput:'b', lColor: 'orange' },
}

var x = 'B';

console.log( obj[x] );

編集:

これをさらに進めて、「x」変数の値が定義されているかどうかをテストすることもできます。

var x = 'Z';

if( !(x in obj) ){
     //do stuff if Z isn't defined
}
于 2012-08-02T02:03:41.543 に答える
0

switchステートメントは読み取り可能です。他の気の利いた方法を試すこともできますが、私にとっては、読みやすいことが優先順位 1 です。

switch ($("#Input").text){
    case "A": 
        sOutput = "a"; 
        lColor = "red";
        break;
    case "B":
        sOutput = "b"; 
        lColor = "orange"; 
        break;
    case "C": 
       sOutput = "c"; 
       lColor = "yellow";
       break;
}
于 2012-08-02T02:22:52.007 に答える
0

私は自分のロジック全体を再設計することに決め、より良いものを開発しました。

みんな助けてくれてありがとう!

于 2012-08-02T15:19:55.083 に答える