JavaScriptにおける連想配列(またはマップ)は、キーと値のペアを持つ配列です。JavaScriptでは、連想配列はJavaScriptオブジェクト、あるいはMap
オブジェクトとして提供されています。ここでは、これらの概念について詳しく見ていきます。
JavaScriptオブジェクトとしての連想配列
JavaScriptのオブジェクトは、プロパティ名と値のペアを保持するデータ構造です。(具体的には{プロパティ名:値})
プロパティ名は文字列(またはSymbol
)である必要があり、このプロパティ名に対応する値を格納します。オブジェクトを使った連想配列の利用例を見てみましょう。
let person = {
name: "Alice",
age: 25,
job: "Engineer"
};
console.log(person.name); // 出力: Alice
console.log(person['age']); // 出力: 25
// 新しいキーと値の追加
person['location'] = "Tokyo";
console.log(person.location); // 出力: Tokyo
オブジェクトの利点と制限
- 利点
- シンプルで直感的な構文。
- キーを動的に追加および削除可能。
- JSONとの互換性が良い。
- 制限
- キーとして文字列または
Symbol
のみ使用可能。 - オブジェクトのキーは順序を保持しない。
Object
には既定のメソッドやプロパティが含まれており、予期せぬ挙動を引き起こす可能性がある。
Map
オブジェクトとしての連想配列
ES6以降、JavaScriptではMap
オブジェクトが導入され、より柔軟でパワフルな連想配列の機能を提供しています。Map
は任意の値(オブジェクトやプリミティブ値を含む)をキーとして使用できます。
let map = new Map();
map.set('name', 'Bob');
map.set('age', 30);
console.log(map.get('name')); // 出力: Bob
console.log(map.has('age')); // 出力: true
map.delete('age');
console.log(map.has('age')); // 出力: false
// キーとしてオブジェクトを使用
const keyObject = { id: 1 };
map.set(keyObject, 'Associated value');
console.log(map.get(keyObject)); // 出力: Associated value
Map
の利点
- キーとして任意の型の値を使用できる。
- キーの挿入順序が保持される。
- キーの存在を
.has()
メソッドで確認可能。 - サイズを
.size
プロパティで簡単に取得できる。
まとめ
JavaScriptにおける連想配列の実装は、用途に応じてObject
またはMap
を選択することにより、データの管理と操作の柔軟性が向上します。単純な構造であればオブジェクトを、より複雑で多様なキーを必要とする場合はMap
を利用すると良いでしょう。この選択は、アプリケーションのパフォーマンスとメンテナンスの観点からも重要です。