JavaScript の列挙子

Shraddha Paghdar 2023年10月12日
  1. JavaScript で配列を使用して列挙子を作成する
  2. JavaScript で for ループを使用して列挙子を作成する
JavaScript の列挙子

列挙型は、C 言語で最も人気のあるカスタムデータ型の 1つであり、整数定数の命名を可能にし、プログラムの読み取りと保守を容易にします。ネイティブ JavaScript には従来の Enum データ型はありませんが、TypeScript で導入されています。

今日の記事では、ネイティブ JavaScript の列挙子について説明します。

JavaScript で配列を使用して列挙子を作成する

JavaScript 配列は、事前定義されたプロパティを持つ特別なオブジェクトです。これらは、入力パラメーターとして渡される値に割り当てることができる数値プロパティです。

JavaScript は、配列を操作するためのいくつかの方法を提供します。最も一般的な配列メソッドのいくつかは、.push().pop().map().reverse() などがあります。

JavaScript の indexOf

これは JavaScript の組み込みメソッドです。このメソッドは配列値を受け取り、配列全体を反復処理することによってインデックス/プロパティを返します。

複数の一致する値が見つかった場合、最初の一致する値のインデックスが返されます。また、値が見つからない場合は、-1 が返されます。実行される検索操作は、=== 演算子を使用した strict 検索です。

構文:

indexOf(searchElement)
indexOf(searchElement, fromIndex)

このメソッドは配列を実行して、入力として渡された searchElement を見つけます。特定のインデックスから検索を開始し、fromIndex を渡します。

この fromIndex は、指定されたインデックスの前の要素をスキップし、このインデックスから検索を開始します。このインデックスが配列範囲外の場合、-1 が返されます。これは、値を検索できないことを意味します。

詳細については、indexOf メソッドの詳細を参照してください。

const osConfig = ['Linux', 'MacOS', 'Windows', 'Ubuntu'];
console.log(osConfig.indexOf('Linux'));

上記のサンプルコードでは、OS 配列の 4つの値を定義しました。indexOf("Linux") を渡すと、osConfig が繰り返され、osConfig のすべての値がチェックされます。

上記のコードの出力は、以下のようになります。

出力:

0

JavaScript で for ループを使用して列挙子を作成する

列挙型を作成する別の方法は、for ループを使用することです。

ユーザーは、入力引数を受け取る関数を作成し、for ループを使用してそれらの引数を反復処理できます。次に、各引数を使用して、キーを引数として、値をインデックスまたは反復番号としてオブジェクトを作成します。

function Enum() {
  for (let i = 0; i < arguments.length; ++i) {
    this[arguments[i]] = i;
  }
  return this;
}
const config = {};
config.type = new Enum('Linux', 'MacOS', 'Windows', 'Ubuntu');

console.log(config);
console.log(config.type.Linux);

上記の例では、引数を取り、引数を 1つずつ繰り返して、ローカルオブジェクトを作成する Enum 関数を作成しました。上記のコードを実行すると、次の出力が得られます。

出力:

{ type: Enum { Linux: 0, MacOS: 1, Windows: 2, Ubuntu: 3 } }
0
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn