995

JavaScript の switch ステートメントで複数のケースが必要です。次のようなものです。

switch (varName)
{
   case "afshin", "saeed", "larry":
       alert('Hey');
       break;

   default:
       alert('Default case');
       break;
}

どうやってやるの?JavaScript でそのようなことを行う方法がない場合は、 DRY の概念にも従う代替ソリューションを知りたいです。

4

23 に答える 23

2005

switchステートメントのフォールスルー機能を使用します。一致したケースはbreak(またはステートメントの終わりswitch) が見つかるまで実行されるため、次のように記述できます。

switch (varName)
{
   case "afshin":
   case "saeed":
   case "larry": 
       alert('Hey');
       break;

   default: 
       alert('Default case');
}
于 2012-11-03T09:44:45.347 に答える
136

これは通常の JavaScript で機能します。

function theTest(val) {
  var answer = "";
  switch( val ) {
    case 1: case 2: case 3:
      answer = "Low";
      break;
    case 4: case 5: case 6:
      answer = "Mid";
      break;
    case 7: case 8: case 9:
      answer = "High";
      break;
    default:
      answer = "Massive or Tiny?";
  }
  return answer;
}

theTest(9);
于 2016-01-17T02:15:47.203 に答える
49

switchステートメントを完全に回避する別のアプローチを次に示します。

var cases = {
  afshin: function() { alert('hey'); },
  _default: function() { alert('default'); }
};
cases.larry = cases.saeed = cases.afshin;

cases[ varName ] ? cases[ varName ]() : cases._default();
于 2012-11-03T09:55:30.693 に答える
27

different case without break inbetweenJavascript でスイッチに複数のケースを割り当てるには、以下のように定義する必要があります。

   <script>
      function checkHere(varName){
        switch (varName)
           {
           case "saeed":
           case "larry":
           case "afshin":
                alert('Hey');
                break;
          case "ss":
               alert('ss');
               break;
         default:
               alert('Default case');
               break;
       }
      }
     </script>

例を参照してくださいリンクをクリックしてください

于 2012-11-03T09:53:39.533 に答える
20

ES6 を使用している場合は、次のようにできます。

if (['afshin', 'saeed', 'larry'].includes(varName)) {
   alert('Hey');
} else {
   alert('Default case');
}

または、以前のバージョンの JavaScript の場合は、次のようにすることができます。

if (['afshin', 'saeed', 'larry'].indexOf(varName) !== -1) {
   alert('Hey');
} else {
   alert('Default case');
}

これは古い IE ブラウザーでは機能しないことに注意してください。ただし、かなり簡単にパッチを適用できます。詳細については、文字列が JavaScript のリストにあるかどうかを判断する質問を参照してください。

于 2013-07-30T20:11:09.417 に答える
4

「 in」演算子を使用できます...
オブジェクト/ハッシュの呼び出しに依存しているため、JavaScript と同じくらい高速です。

// Assuming you have defined functions f(), g(a) and h(a,b)
// somewhere in your code,
// you can define them inside the object, but...
// the code becomes hard to read. I prefer it this way.

o = { f1:f, f2:g, f3:h };

// If you use "STATIC" code can do:
o['f3']( p1, p2 )

// If your code is someway "DYNAMIC", to prevent false invocations
// m brings the function/method to be invoked (f1, f2, f3)
// and you can rely on arguments[] to solve any parameter problems.
if ( m in o ) o[m]()
于 2014-09-06T12:51:28.440 に答える
-2

スイッチ条件のアプローチを変更するだけです:

switch (true) {
    case (function(){ return true; })():
        alert('true');
        break;
    case (function(){ return false; })():
        alert('false');
        break;
    default:
        alert('default');
}
于 2015-12-16T10:02:56.583 に答える
-4
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Example1</title>
    <link rel="stylesheet" href="css/style.css" >
    <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
    <script>
        function display_case(){
            var num =   document.getElementById('number').value;

                switch(num){

                    case (num = "1"):
                    document.getElementById("result").innerHTML = "You select day Sunday";
                    break;

                    case (num = "2"):
                    document.getElementById("result").innerHTML = "You select day  Monday";
                    break;

                    case (num = "3"):
                    document.getElementById("result").innerHTML = "You select day  Tuesday";
                    break;

                    case (num = "4"):
                    document.getElementById("result").innerHTML = "You select day  Wednesday";
                    break;

                    case (num = "5"):
                    document.getElementById("result").innerHTML = "You select day  Thusday";
                    break;

                    case (num = "6"):
                    document.getElementById("result").innerHTML = "You select day  Friday";
                    break;

                    case (num = "7"):
                    document.getElementById("result").innerHTML = "You select day  Saturday";
                    break;

                    default:
                    document.getElementById("result").innerHTML = "You select day  Invalid Weekday";
                    break
                }

        }
    </script>
</head>
<body>
    <center>
        <div id="error"></div>
        <center>
            <h2> Switch Case Example </h2>
            <p>Enter a Number Between 1 to 7</p>
            <input type="text" id="number" />
            <button onclick="display_case();">Check</button><br />
            <div id="result"><b></b></div>
        </center>
    </center>
</body>
于 2015-10-05T09:07:09.233 に答える
-6

私にとってこれは最も簡単な方法です:

switch (["afshin","saeed","larry"].includes(varName) ? 1 : 2) {
   case 1:
       alert('Hey');
       break;

   default:
       alert('Default case');
       break;
}
于 2019-11-21T07:29:52.687 に答える