【JavaScript】オブジェクトをMap(マップ)に変換する方法を解説
JavaScriptでは、キーと値のペアを持つ通常のオブジェクトを、Mapオブジェクトへ変換したい場面があります。本記事では、その具体的な実装方法をサンプルコード付きで解説します。
前提となるオブジェクト
まず、以下のようなオブジェクトを想定します。
const obj = {
name: "Vikas",
age: 45,
occupation: "Frontend Developer",
address: "Tilak Nagar, New Delhi",
experience: 23,
};このようなオブジェクトを受け取り、すべてのキーと値のペアを保持した Map を返す関数を作成する必要があります。
基本的な実装方法
変換処理のコードは以下の通りです。
const obj = {
name: "Vikas",
age: 45,
occupation: "Frontend Developer",
address: "Tilak Nagar, New Delhi",
experience: 23,
salary: "98000"
};
const objectToMap = obj => {
const keys = Object.keys(obj);
const map = new Map();
for(let i = 0; i < keys.length; i++){
// マップに新しいキーと値のペアを挿入
map.set(keys[i], obj[keys[i]]);
};
return map;
};
console.log(objectToMap(obj));コードのポイント
Object.keys()でオブジェクトのすべてのキーを配列として取得します。new Map()で空のマップを生成します。map.set(キー, 値)を使って、各キーと値のペアを順番に挿入していきます。
出力結果
コンソールには以下のように出力されます。
Map(6) {
'name' => 'Vikas',
'age' => 45,
'occupation' => 'Frontend Developer',
'address' => 'Tilak Nagar, New Delhi',
'experience' => 23,
'salary' => '98000'
}オブジェクトの内容がすべてMapに正しく変換されていることが確認できます。
より簡潔な方法:Object.entries() を使う
ES2017以降では、Object.entries() を使うことで、上記の処理をわずか1行で実現できます。
const objectToMap = obj => new Map(Object.entries(obj));
console.log(objectToMap({ a: 1, b: 2 }));
// 結果: Map(2) { 'a' => 1, 'b' => 2 }Object.entries(obj) は「[キー, 値]」の配列を要素とする二次元配列を返すため、それをそのまま new Map() の引数に渡すだけで変換が完了します。実務ではこちらの書き方が推奨されます。
まとめ
- オブジェクトをMapに変換するには、
Object.keys()とmap.set()を組み合わせる方法が基本です。 - モダンな環境では
new Map(Object.entries(obj))の1行で簡潔に書けます。 - Mapは任意の型をキーにでき、
sizeプロパティで要素数も取得しやすいため、用途に応じて使い分けると良いでしょう。
-
JavaScriptのRegExp(正規表現)オブジェクトとは?基本の使い方をわかりやすく解説
RegExp(正規表現)オブジェクトは、テキストに対してパターンマッチングを行い、目的の文字列部分を検索・抽出するために使用されます。JavaScriptでは、RegExpオブジェクトを「RegExpコンストラクタ」または「リテラル構文」の2通りの方法で作成できます。 RegExpオブジェクトの作成方法 コンストラクタを使用する場合: new RegExp(pattern) リテラル構文を使用する場合: /pattern/ 主なメソッド test():文字列がパターンに一致するかどうかを真偽値(true / false)で返します。 exec():パターンに一致した文字列を返します。
-
JavaScriptのオブジェクト初期化子とは?使い方をサンプルコードで解説
オブジェクト初期化子とは オブジェクト初期化子(Object Initializer)は、新しく生成したオブジェクトを初期化するための式です。波括弧 {} の中に、「プロパティ名」と「それに対応する値」のペアを0個以上、カンマ区切りで列挙して記述します。 これにより、変数宣言と同時にオブジェクトの中身を簡単に定義することができます。 以下は、JavaScriptでオブジェクト初期化子を使用したサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta chars