TypeScript Map 反復処理解説
TypeScriptでMapを反復処理する
TypeScriptにおけるMapは、キーと値のペアを格納するデータ構造です。辞書やハッシュテーブルとも呼ばれます。Mapの要素を反復処理するには、いくつかの方法があります。
for...ofループを使用する
const myMap = new Map();
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
for (const [key, value] of myMap) {
console.log(key, value);
}
この方法では、Mapの各エントリを [key, value]
の形式で取得し、ループ内で処理します。
forEachメソッドを使用する
const myMap = new Map();
// ...
myMap.forEach((value, key) => {
console.log(key, value);
});
この方法では、Mapの各エントリに対してコールバック関数を呼び出します。コールバック関数は、値、キー、およびオプションでMap自体を受け取ることができます。
entriesメソッドを使用する
const myMap = new Map();
// ...
for (const entry of myMap.entries()) {
const [key, value] = entry;
console.log(key, value);
}
この方法では、Mapの各エントリを [key, value]
の形式で取得し、ループ内で処理します。for...of
ループと似ていますが、entries
メソッドを明示的に呼び出す必要があります。
注意
- Mapの要素は、変更可能なオブジェクトです。ループ中に要素を変更すると、他の要素への影響が生じる可能性があります。
- Mapの要素は、挿入された順序で反復処理されます。
const myMap = new Map();
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
for (const [key, value] of myMap) {
console.log(key, value);
}
この例では、myMap
という新しいMapを作成し、キーと値のペアを追加します。その後、for...of
ループを使用してMapの各エントリを反復処理します。ループ内で、key
とvalue
をデバッグ出力しています。
const myMap = new Map();
// ...
myMap.forEach((value, key) => {
console.log(key, value);
});
この例では、myMap
の各エントリに対してコールバック関数を呼び出します。コールバック関数は、値、キー、およびオプションでMap自体を受け取ることができます。この例では、コールバック関数内でkey
とvalue
をデバッグ出力しています。
const myMap = new Map();
// ...
for (const entry of myMap.entries()) {
const [key, value] = entry;
console.log(key, value);
}
for...inループを使用する (非推奨)
const myMap = new Map();
// ...
for (const key in myMap) {
const value = myMap.get(key);
console.log(key, value);
}
注意
この方法は、Mapの要素を反復処理する際には非推奨です。for...in
ループは、オブジェクトのプロパティを反復処理するために設計されており、Mapの要素を正確に反復処理できない場合があります。
keysメソッドとvaluesメソッドを使用する
const myMap = new Map();
// ...
for (const key of myMap.keys()) {
const value = myMap.get(key);
console.log(key, value);
}
for (const value of myMap.values()) {
console.log(value);
}
これらのメソッドは、それぞれMapのキーと値を反復処理します。ただし、キーと値を個別に取得する必要がある場合は、get
メソッドを使用して値を取得する必要があります。
entriesメソッドとスプレッド演算子を使用する
const myMap = new Map();
// ...
for (const [key, value] of [...myMap.entries()]) {
console.log(key, value);
}
typescript dictionary iterator