JavaScriptでオブジェクトと配列を簡単変換!5つの方法とサンプルコード – Japanシーモア

JavaScriptでオブジェクトと配列を簡単変換!5つの方法とサンプルコード

JavaScriptでオブジェクトと配列を変換する方法JS
この記事は約8分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

JavaScriptでオブジェクトと配列を簡単に変換する方法が身につくように、この記事では初心者向けにわかりやすく解説していきます。

まずは、オブジェクトと配列についての基本知識から学んでいきましょう。

【JavaScriptのオブジェクトと配列】

○オブジェクトとは

JavaScriptのオブジェクトは、キーと値のペアを格納するデータ構造です。

キーは一意であり、それに対応する値を参照するために使用されます。オブジェクトは、下記のようなオブジェクトリテラル表記を使用して作成されます。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

○配列とは

配列は、値のリストを順番に格納するデータ構造です。

配列の各要素にはインデックスが付与され、インデックスを使って要素にアクセスできます。

配列は、下記のような配列リテラル表記を使用して作成されます。

const arr = ['value1', 'value2', 'value3'];

【オブジェクトから配列への変換方法】

オブジェクトから配列へ変換する方法はいくつかあります。

ここでは、3つの方法を紹介します。

○方法1: Object.keys()

Object.keys()メソッドを使うと、オブジェクトのすべてのキーを配列として取得できます。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

const keys = Object.keys(obj);
console.log(keys); // ['key1', 'key2', 'key3']

○方法2: Object.values()

Object.values()メソッドを使うと、オブジェクトのすべての値を配列として取得できます。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

const values = Object.values(obj);
console.log(values); // ['value1', 'value2', 'value3']

○方法3: Object.entries()

Object.entries()メソッドを使うと、オブジェクトのキーと値のペアを配列として取得できます。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

const entries = Object.entries(obj);
console.log(entries); // [['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']]

【配列からオブジェクトへの変換方法】

配列からオブジェクトへ変換する方法もいくつかあります。

ここでは、2つの方法を紹介します。

○方法4: 配列のreduce()メソッド

配列のreduce()メソッドを使って、配列からオブジェクトへ変換できます。

下記のサンプルコードでは、キーと値が交互に格納された配列からオブジェクトを作成しています。

const arr = ['key1', 'value1', 'key2', 'value2', 'key3', 'value3'];

const obj = arr.reduce((accumulator, currentValue, index) => {
  if (index % 2 === 0) {
    accumulator[currentValue] = arr[index + 1];
  }
  return accumulator;
}, {});

console.log(obj); // {key1: 'value1', key2: 'value2', key3: 'value3'}

○方法5: forループとオブジェクトリテラル

forループとオブジェクトリテラルを使って、配列からオブジェクトへ変換できます。

下記のサンプルコードでは、キーと値のペアが格納された配列からオブジェクトを作成しています。

const arr = [['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']];

const obj = {};

for (const [key, value] of arr) {
  obj[key] = value;
}

console.log(obj); // {key1: 'value1', key2: 'value2', key3: 'value3'}

【サンプルコードと解説】

それぞれの変換方法に対応するサンプルコードを、下記に詳しく解説しています。

○サンプルコード1: Object.keys()を使ったオブジェクトから配列への変換

このサンプルコードでは、オブジェクトのキーを取得して配列に変換しています。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

const keys = Object.keys(obj);
console.log(keys); // ['key1', 'key2', 'key3']

○サンプルコード2: Object.values()を使ったオブジェクトから配列への変換

このサンプルコードでは、オブジェクトの値を取得して配列に変換しています。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

const values = Object.values(obj);
console.log(values); // ['value1', 'value2', 'value3']

○サンプルコード3: Object.entries()を使ったオブジェクトから配列への変換

このサンプルコードでは、オブジェクトのキーと値のペアを取得して配列に変換しています。

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

const entries = Object.entries(obj);
console.log(entries); // [['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']]

○サンプルコード4: 配列のreduce()メソッドを使った配列からオブジェクトへの変換

このサンプルコードでは、キーと値が交互に格納された配列からオブジェクトを作成しています。

const arr = ['key1', 'value1', 'key2', 'value2', 'key3', 'value3'];

const obj = arr.reduce((accumulator, currentValue, index) => {
  if (index % 2 === 0) {
    accumulator[currentValue] = arr[index + 1];
  }
  return accumulator;
}, {});

console.log(obj); // {key1: 'value1', key2: 'value2', key3: 'value3'}

○サンプルコード5: forループとオブジェクトリテラルを使った配列からオブジェクトへの変換

このサンプルコードでは、キーと値のペアが格納された配列からオブジェクトを作成しています。

const arr = [['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']];

const obj = {};

for (const [key, value] of arr) {
  obj[key] = value;
}

console.log(obj); // {key1: 'value1', key2: 'value2', key3: 'value3'}

【変換時の注意点】

オブジェクトと配列の変換にはいくつか注意すべき点があります。

  1. オブジェクトのキーは文字列ですが、配列のインデックスは数値です。
    そのため、配列からオブジェクトへ変換する際に、インデックスをキーとして使用すると、文字列に変換されます。
  2. オブジェクトのキーは一意である必要がありますが、配列には同じ値が複数存在することがあります。
    そのため、配列からオブジェクトへ変換する際に、同じキーが複数存在すると、最後に登場したキーの値が優先されます。
  3. オブジェクトは順序を保持しないため、変換後の配列やオブジェクトの順序が元のデータと異なることがあります。

まとめ

この記事では、JavaScriptでオブジェクトと配列を相互に変換する方法を、5つのサンプルコードと注意点を交えて紹介しました。

オブジェクトと配列の変換は、データの構造を柔軟に扱うために重要なスキルです。

この記事を参考に、JavaScriptでのオブジェクトと配列の変換に自信を持って取り組んでください。