JavaScriptで連想配列を使う
JavaScriptにおける連想配列(ハッシュ)の扱い
連想配列(またはハッシュ)は、キーと値のペアを格納するデータ構造です。JavaScriptでは、オブジェクトが連想配列として機能します。
オブジェクトの基礎
JavaScriptのオブジェクトは、キーと値のペアの集まりです。キーは文字列またはシンボルであり、値は任意のJavaScript値(数値、文字列、ブール値、関数、オブジェクトなど)です。
let person = {
name: "Alice",
age: 30,
city: "Tokyo"
};
キーへのアクセスと値の変更
オブジェクトのキーを使用して、対応する値にアクセスしたり、変更したりすることができます。
console.log(person.name); // Output: "Alice"
person.age = 31;
console.log(person.age); // Output: 31
キーの追加と削除
新しいキーと値のペアを追加したり、既存のキーと値のペアを削除したりすることができます。
person.job = "Engineer";
delete person.city;
ドット記法とブラケット記法
オブジェクトのキーにアクセスする方法は、ドット記法とブラケット記法の2種類があります。
- ブラケット記法
object["key"]
- ドット記法
object.key
ブラケット記法は、動的なキー名や予約語を使用する場合に便利です。
let key = "name";
console.log(person[key]); // Output: "Alice"
オブジェクトのキーと値をループで処理するには、for...in
ステートメントを使用します。
for (let key in person) {
console.log(key, person[key]);
}
基本的な使い方
let person = {
name: "Alice",
age: 30,
city: "Tokyo"
};
console.log(person.name); // Output: "Alice"
person.age = 31;
console.log(person.age); // Output: 31
person.job = "Engineer";
delete person.city;
let key = "name";
console.log(person[key]); // Output: "Alice"
for (let key in person) {
console.log(key, person[key]);
}
複雑な例: 電話帳
let phonebook = {
"Alice": "123-4567",
"Bob": "987-6543",
"Charlie": "555-1212"
};
let name = "Bob";
console.log(phonebook[name]); // Output: "987-6543"
さらに複雑な例: カート
let cart = {
"apple": 2,
"banana": 3,
"orange": 1
};
function calculateTotal(cart) {
let total = 0;
for (let item in cart) {
total += cart[item];
}
return total;
}
console.log(calculateTotal(cart)); // Output: 6
Mapオブジェクト
ES6から導入されたMap
オブジェクトは、連想配列の機能を強化したデータ構造です。キーとして任意の値(数値、文字列、オブジェクトなど)を使用でき、set()
メソッドでキーと値のペアを追加し、get()
メソッドで値を取得します。
let map = new Map();
map.set("name", "Alice");
map.set(1, "Bob");
console.log(map.get("name")); // Output: "Alice"
console.log(map.get(1)); // Output: "Bob"
WeakMapオブジェクト
WeakMap
オブジェクトは、Map
オブジェクトと似ていますが、キーとしてオブジェクトのみを使用でき、ガベージコレクションの対象となります。つまり、キーが参照されなくなった場合、自動的に削除されます。
let obj = {};
let weakMap = new WeakMap();
weakMap.set(obj, "value");
// objが参照されなくなると、weakMapから自動的に削除されます
Setオブジェクト
Set
オブジェクトは、重複しない値の集合を保持します。キーと値が同じであるため、連想配列として使用することもできます。
let set = new Set();
set.add("apple");
set.add("banana");
set.add("apple"); // 重複は無視されます
console.log(set.has("apple")); // Output: true
Object.entries()とObject.fromEntries()
Object.entries()
メソッドは、オブジェクトのキーと値のペアを配列の配列として返します。Object.fromEntries()
メソッドは、その逆の操作を行い、配列の配列からオブジェクトを作成します。
let person = { name: "Alice", age: 30 };
let entries = Object.entries(person);
console.log(entries); // Output: [["name", "Alice"], ["age", 30]]
let newPerson = Object.fromEntries(entries);
console.log(newPerson); // Output: { name: "Alice", age: 30 }
javascript dictionary hashtable