複数のラベルを対応させる

広告

switch文は「case 値:」という形式のラベルと実行される文の組み合わせからなっています。再度書式を確認すると次のようになっています。

switch (式){
  case 値1:
    実行する文;
    break;
  case 値2:
    実行する文;
    break;
  case 値3:
    実行する文;
    break;
}

「case 値:」形式のラベルはあくまでどこから実行する文を開始するのかを示しているだけなので、複数の値に対して同じ文を実行した場合には文に対して複数のラベルを付けることも可能です。

switch (式){
  case 値1:
  case 値2:
  case 値3:
    実行する文;
    break;
  case 値4:
  case 値5:
    実行する文;
    break;
  case 値6:
    実行する文;
    break;
}

上記の場合は式を評価した値が「値1」「値2」「値3」だった場合に同じ文を実行します。また「値4」「値5」だった場合も同じ文を実行します。このように複数のラベルを同じ文に対して付けることが可能です。

サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script5_1.js">
</script>

</body>
</html>
var answer = [1, 3, 2, 5, 3, 4, 2, 5, 1, 3, 1]

document.write("<p>");
document.write("アンケートの結果です<br />");

for(var i = 0; i < answer.length; i++){
  document.write("回答[" + (i + 1) + "] ");

  switch(answer[i]){
    case 1:
    case 2:
      document.write("満足です");
      break;
    case 3:
      document.write("どちらでもない");
      break;
    case 4:
    case 5:
      document.write("不満足です");
      break;
    default:
      document.write("有効な値ではありません");
      break;
  }

  document.write("(" + answer[i] + ")<br />");
}

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p5-1

( Written by Tatsuo Ikura )