JavaScript と TypeScript における switch 文で同じコードを 2 つのケースで実行する方法

2024-07-27

この場合、以下の 2 つの方法で実現することができます。

switch (value) {
  case 1:
  case 3:
    console.log("値は 1 または 3 です");
    break;
  case 2:
  case 4:
    console.log("値は 2 または 4 です");
    break;
  default:
    console.log("その他の値です");
}

上記の例では、value が 1 または 3 の場合、console.log("値は 1 または 3 です"); が実行されます。同様に、value が 2 または 4 の場合、console.log("値は 2 または 4 です"); が実行されます。

この方法は、コードを簡潔に記述できるという利点があります。

break 文を省略する

もう 1 つの方法は、break 文を省略する方法です。

switch (value) {
  case 1:
  case 3:
    console.log("値は 1 または 3 です");
  case 2:
  case 4:
    console.log("値は 2 または 4 です");
    break;
  default:
    console.log("その他の値です");
}

上記の例では、value が 1 または 3 の場合、console.log("値は 1 または 3 です"); が実行された後、console.log("値は 2 または 4 です"); も実行されます。これは、break 文が省略されているためです。

この方法は、2 つのケースで同じ処理を実行する必要がある場合に有効です。

注意点

  • break 文を省略する場合は、意図した処理が実行されていることを確認する必要があります。



function checkGrade(score) {
  switch (score) {
    case 90:
    case 95:
    case 100:
      console.log("A です!");
      break;
    case 80:
    case 85:
      console.log("B です!");
      break;
    case 70:
    case 75:
      console.log("C です!");
      break;
    default:
      console.log("F です...");
  }
}

checkGrade(95); // 出力: A です!
checkGrade(82); // 出力: B です!
checkGrade(65); // 出力: F です...
function calculateDiscount(price, discountRate) {
  switch (discountRate) {
    case 10:
    case 20:
      console.log("割引後の価格は " + (price * (1 - discountRate / 100)) + " 円です。");
      console.log("割引額は " + (price * discountRate / 100) + " 円です。");
      break;
    case 30:
      console.log("割引後の価格は " + (price * (1 - discountRate / 100)) + " 円です。");
      console.log("割引額は " + (price * discountRate / 100) + " 円です。");
      console.log("さらに、クーポンが適用されます!");
      break;
    default:
      console.log("割引率が無効です。");
  }
}

calculateDiscount(1000, 10); // 出力: 割引後の価格は 900 円です。割引額は 100 円です。
calculateDiscount(1000, 30); // 出力: 割引後の価格は 700 円です。割引額は 300 円です。さらに、クーポンが適用されます!
calculateDiscount(1000, 50); // 出力: 割引率が無効です。

解説

例 1

  • checkGrade 関数は、学生の点数を引数として受け取り、その点数がどのグレードに相当するかを出力します。
  • switch 文を使用して、点数を評価します。
  • case 90, case 95, case 100 は、すべて A のグレードに対応します。これらの case に一致した場合、console.log("A です!"); が出力され、break 文によって switch 文から抜けます。
  • default ラベルは、上記のいずれの case にも一致しない場合に実行されます。この場合、console.log("F です..."); が出力されます。

例 2

  • calculateDiscount 関数は、商品の価格と割引率を引数として受け取り、割引後の価格と割引額を出力します。
  • case 10case 20 は、どちらも 10% と 20% の割引に対応します。これらの case に一致した場合、console.log("割引後の価格は " + (price * (1 - discountRate / 100)) + " 円です。");console.log("割引額は " + (price * discountRate / 100) + " 円です。"); が出力されます。その後、break 文によって switch 文から抜けます。
  • case 30 は、30% の割引に対応します。この case に一致した場合、console.log("割引後の価格は " + (price * (1 - discountRate / 100)) + " 円です。");



最も基本的な方法は、ネストされた if 文を使用する方法です。

if (condition1) {
  if (subCondition) {
    // 共通の処理
  }
} else if (condition2) {
  if (subCondition) {
    // 共通の処理
  }
}

この方法は、条件構造が比較的単純な場合に有効です。しかし、ネストが深くなると、コードが複雑になり、読みづらくなるという欠点があります。

論理演算子

if (condition1 || condition2) {
  // 共通の処理
}

この方法は、複数の条件が互いに排他的ではない場合に有効です。例えば、ある値が 10 または 20 の場合に処理を実行する場合などに使用できます。

関数

関数を作成して、共通の処理をカプセル化する方法もあります。

function commonFunction() {
  // 共通の処理
}

if (condition1) {
  commonFunction();
} else if (condition2) {
  commonFunction();
}

この方法は、共通の処理が複雑な場合に有効です。また、コードを再利用しやすくすることができます。

オブジェクト

オブジェクトを使用して、条件と処理を関連付ける方法もあります。

const conditions = {
  condition1: {
    subCondition: true,
    action: commonFunction
  },
  condition2: {
    subCondition: false,
    action: commonFunction
  }
};

if (conditions[condition].subCondition) {
  conditions[condition].action();
}

この方法は、条件と処理の組み合わせを柔軟に定義したい場合に有効です。

配列

const conditions = [
  { condition: condition1, subCondition: true, action: commonFunction },
  { condition: condition2, subCondition: false, action: commonFunction }
];

for (const condition of conditions) {
  if (condition.subCondition) {
    condition.action();
  }
}

javascript typescript switch-statement



Prototype を使用してテキストエリアを自動サイズ変更するサンプルコード

以下のものが必要です。テキストエリアを含む HTML ファイルHTML ファイルに Prototype ライブラリをインクルードします。テキストエリアに id 属性を設定します。以下の JavaScript コードを追加します。このコードは、以下の処理を行います。...


JavaScriptにおける数値検証 - IsNumeric()関数の代替方法

JavaScriptでは、入力された値が数値であるかどうかを検証する際に、isNaN()関数やNumber. isInteger()関数などを利用することが一般的です。しかし、これらの関数では小数点を含む数値を適切に検出できない場合があります。そこで、小数点を含む数値も正しく検証するために、IsNumeric()関数を実装することが有効です。...


jQueryによるHTML文字列のエスケープ: より詳細な解説とコード例

JavaScriptやjQueryでHTMLページに動的にコンテンツを追加する際、HTMLの特殊文字(<, >, &, など)をそのまま使用すると、意図しないHTML要素が生成される可能性があります。これを防ぐために、HTML文字列をエスケープする必要があります。...


JavaScriptフレームワーク:React vs Vue.js

JavaScriptは、Webページに動的な機能を追加するために使用されるプログラミング言語です。一方、jQueryはJavaScriptライブラリであり、JavaScriptでよく行う操作を簡略化するためのツールを提供します。jQueryを学ぶ場所...


JavaScriptにおける未定義オブジェクトプロパティ検出のコード例解説

JavaScriptでは、オブジェクトのプロパティが定義されていない場合、そのプロパティへのアクセスはundefinedを返します。この現象を検出して適切な処理を行うことが重要です。最も単純な方法は、プロパティの値を直接undefinedと比較することです。...



SQL SQL SQL SQL Amazon で見る



JavaScript、HTML、CSSでWebフォントを検出する方法

CSS font-family プロパティを使用するCSS font-family プロパティは、要素に適用されるフォントファミリーを指定するために使用されます。このプロパティを使用して、Webページで使用されているフォントのリストを取得できます。


JavaScript、HTML、およびポップアップを使用したブラウザのポップアップブロック検出方法

window. open 関数は、新しいウィンドウまたはタブを開きます。ブラウザがポップアップをブロックしている場合、この関数はエラーを生成します。このエラーを処理して、ポップアップがブロックされているかどうかを判断できます。window


JavaScriptを使用してHTML要素の背景色をCSSプロパティで設定する方法

このチュートリアルでは、JavaScriptを使用してHTML要素の背景色をCSSプロパティで設定する方法について説明します。方法HTML要素の背景色を設定するには、以下の3つの方法があります。style属性HTML要素のstyle属性を使用して、直接CSSプロパティを指定できます。


JavaScript オブジェクトの長さを取得する代替的な方法

JavaScriptにおけるオブジェクトは、プロパティとメソッドを持つデータ構造です。プロパティはデータの値を保持し、メソッドはオブジェクトに対して実行できる関数です。JavaScriptの標準的なオブジェクトには、一般的に「長さ」という概念はありません。これは、配列のようなインデックスベースのデータ構造ではないためです。


JavaScriptグラフ可視化ライブラリのコード例解説

JavaScriptは、ウェブブラウザ上で動作するプログラミング言語です。その中で、グラフの可視化を行うためのライブラリが数多く存在します。これらのライブラリは、データ構造やアルゴリズムを視覚的に表現することで、理解を深める助けとなります。