JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【初心者向け】JavaScriptでオブジェクトをMap(マップ)に変換する方法を徹底解説

JavaScriptでは、キーと値のペアを持つ通常のオブジェクトを、Mapオブジェクトに変換したい場面があります。Mapは任意の型をキーとして扱え、要素の追加・削除や反復処理にも優れているため、データ構造の用途によってはオブジェクトよりも便利です。本記事では、オブジェクトをMapへ変換する具体的な方法をサンプルコード付きで解説します。

変換対象となるオブジェクト

例として、次のような人物情報を格納したオブジェクトを想定します。

const obj = {
    name: "Jai",
    age: 32,
    occupation: "Software Engineer",
    address: "Dhindosh, Maharasthra",
    salary: "146000"
};

このように複数のキーと値のペアを持つオブジェクトを受け取り、それをそのままMapインスタンスに変換する関数を作成していきます。

変換の基本的な流れ

変換の手順はシンプルで、以下の3ステップで実装できます。

  1. Object.keys()メソッドを使い、オブジェクトのすべてのキーを配列として取得する。
  2. new Map()で空のMapインスタンスを作成する。
  3. forループで各キーを走査しながら、map.set()メソッドでキーと値のペアを挿入していく。

サンプルコード

実際のコードは以下の通りです。

const obj = {
    name: "Jai",
    age: 32,
    occupation: "Software Engineer",
    address: "Dhindosh, Maharasthra",
    salary: "146000"
};
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));

実行結果

コンソールには以下のように出力されます。オブジェクトの内容がそのままMapに移し替えられていることが確認できます。

Map(5) {
    'name' => 'Jai',
    'age' => 32,
    'occupation' => 'Software Engineer',
    'address' => 'Dhindosh, Maharasthra',
    'salary' => '146000'
}

もっと簡単に:Object.entries()を使った一行変換

上記の方法は処理の流れが分かりやすい反面、やや冗長です。ES2017で導入されたObject.entries()を活用すれば、同じ変換をたった1行で実現できます。

const map = new Map(Object.entries(obj));
console.log(map);

Object.entries()はオブジェクトを[キー, 値]のペアからなる配列に変換するメソッドであり、Mapコンストラクタはその形式の配列を直接受け取れるため、組み合わせることで非常に簡潔に記述できます。実務ではこちらの方法が使われることも多いので、両方の書き方を覚えておくと良いでしょう。

  1. JavaScriptのRegExp(正規表現)オブジェクトとは?基本の使い方をわかりやすく解説

    RegExp(正規表現)オブジェクトは、テキストに対してパターンマッチングを行い、目的の文字列部分を検索・抽出するために使用されます。JavaScriptでは、RegExpオブジェクトを「RegExpコンストラクタ」または「リテラル構文」の2通りの方法で作成できます。 RegExpオブジェクトの作成方法 コンストラクタを使用する場合: new RegExp(pattern) リテラル構文を使用する場合: /pattern/ 主なメソッド test():文字列がパターンに一致するかどうかを真偽値(true / false)で返します。 exec():パターンに一致した文字列を返します。

  2. JavaScriptのオブジェクト初期化子とは?使い方をサンプルコードで解説

    オブジェクト初期化子とは オブジェクト初期化子(Object Initializer)は、新しく生成したオブジェクトを初期化するための式です。波括弧 {} の中に、「プロパティ名」と「それに対応する値」のペアを0個以上、カンマ区切りで列挙して記述します。 これにより、変数宣言と同時にオブジェクトの中身を簡単に定義することができます。 以下は、JavaScriptでオブジェクト初期化子を使用したサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta chars