2016-10-21 5 views
0

毎回それを入力せずに、関数の変数をすべてのケースでチェックする方法はありますか?この例ではスイッチ内のすべてのケースについてif文

Javascriptを

function htmlParse(type) { 
    var returnString = ""; 
    $('#drag-drop > .draggable').each(function() { 
     var item = $(this).attr('id'); 
     switch(item) { 
      case 'bread-top': 
       returnString += '<html>'; 
       if (type == 'string') 
        returnString += '\n'; 
       break; 
      case 'bread-bottom': 
       returnString += '</html>'; 
       if (type == 'string') 
        returnString += '\n'; 
       break; 
      case 'turkey': 
       returnString += ''+ 
          ' <body>\n'+ 
          '  Your website content goes here.\n'+ 
          ' </body>'; 
       if (type == 'string') 
        returnString += '\n'; 
       break; 
     } 
    }); 
    return returnString; 
} 

私は実際には毎回それを入力することなく、スイッチ内のすべてのケースでif (type == 'string')...を実行したいです。

おそらくそれは遅いですが、配列からそれぞれのケースを構築することなくこれを行う方法は考えられません。あなたは、それを行うdefaultを追加し、フラグを使用しないように、一致しないケースが必要な場合は

var item = $(this).attr('id'); 
switch (item) { 
    case 'bread-top': 
     returnString += '<html>'; 
     break; 
    case 'bread-bottom': 
     returnString += '</html>'; 
     break; 
    case 'turkey': 
     returnString += '' + 
      ' <body>\n' + 
      '  Your website content goes here.\n' + 
      ' </body>'; 
     break; 
} 
if (type == 'string') 
    returnString += '\n'; 

var item = $(this).attr('id'); 
var flag = true; 
switch (item) { 
    case 'bread-top': 
     returnString += '<html>'; 
     break; 
    case 'bread-bottom': 
     returnString += '</html>'; 
     break; 
    case 'turkey': 
     returnString += '' + 
      ' <body>\n' + 
      '  Your website content goes here.\n' + 
      ' </body>'; 
     break; 
    default: 
     flag = false; 
     break; 
} 
if (flag && type == 'string') 
    returnString += '\n'; 
+2

'switch'の後に挿入しますか? –

+1

サイドノート:**ブロックがただ一つのステートメントだけを含んでいても(当時)、 '{}'を一貫して使うことを強くお勧めします。 –

+0

@Someprogrammerdude - 各ケースの後に改行が必要であることに注意してください。 –

答えて

2

だけ後にそれをswitchを置きますすべてのケースで同じことをスイッチケースから外すことができます

を置き換えます

return returnString; 

return type === "string" ? returnsString +"\n" : returnString; 

は、あなたがどこか他のタイプを初期化していない場合は、条件は必ず失敗し、ReturnStringには、これまでの文字列よりも何もすることができます場合は、おそらくより良い名前を見つける必要があることに注意してくださいそれ。

+1

これはそれです。なんらかの理由で、スイッチの後で.each()ループの中にチェックを入れることさえ理解できませんでした。これが私が眠って、愚かな質問をする前に朝に再び見るべき理由です。非常に高く評価。 –

1

をあなたがやっているので

関連する問題