JavaScriptでオブジェクトの配列を1つのオブジェクトにフラット化する最も簡単な方法
JavaScriptでは、reduce()メソッドを活用することで、オブジェクトの配列を1つのオブジェクトへと簡単にフラット化できます。スプレッド構文(...)と組み合わせることで、わずか数行のコードで複数のオブジェクトのプロパティをまとめられます。
サンプルデータ
例として、次のようなオブジェクトの配列を用意します。各要素が個別のオブジェクトになっており、これらを1つのオブジェクトに統合するのが目標です。
const studentDetails = [
{Name: "Chris"},
{Age: 22}
]実装例:reduce()で配列をフラット化する
reduce()の初期値として空のオブジェクト{}を指定し、ループ処理の中でスプレッド構文を使って既存のプロパティと現在の要素のプロパティを順次マージしていきます。
const studentDetails = [
{Name: "Chris"},
{Age: 22}
]
const objectStudent = studentDetails.reduce((obj, value) => {
return { ...obj, ...value }
}, {})
console.log(objectStudent);コードのポイント
- 第1引数(obj):これまでに蓄積されたオブジェクト(アキュムレータ)
- 第2引数(value):配列から取り出された現在のオブジェクト
- { ...obj, ...value }:両方のオブジェクトのプロパティを結合した新しいオブジェクトを返す
- 初期値 {}:reduce()の第2引数として渡すことで、空の状態から処理を開始できる
プログラムの実行方法
上記のコードはNode.js環境で実行できます。ファイル名を指定して次のコマンドを実行してください。ここではファイル名を「demo64.js」としています。
node demo64.js
実行結果
プログラムを実行すると、コンソールには次のように出力されます。バラバラだった2つのオブジェクトが、NameとAgeのプロパティを持つ単一のオブジェクトに統合されていることが確認できます。
PS C:\Users\Amit\JavaScript-code> node demo64.js
{ Name: 'Chris', Age: 22 }まとめ
reduce()とスプレッド構文を組み合わせれば、オブジェクトの配列を1つのオブジェクトにフラット化する処理を簡潔に記述できます。この手法は、APIレスポンスやフォームデータなど、配列形式で受け取ったデータを扱いやすい形に変換したい場合に非常に便利です。
-
【JavaScript入門】複数のオブジェクトを1つにマージして単一のオブジェクト配列を作成する方法
JavaScriptでは、Object.assign()メソッドとスプレッド構文(...)を組み合わせることで、配列内の複数のオブジェクトを1つのオブジェクトに簡単にマージすることができます。 Object.assign()は、1つ以上のコピー元オブジェクトから、コピー先のオブジェクトへすべてのプロパティをコピーするためのメソッドです。スプレッド構文を使って配列の要素を展開することで、各オブジェクトのキーと値が1つのオブジェクトに統合されます。 コード例 以下のコードは、配列内の複数のオブジェクトを単一のオブジェクトにマージする例です。 <!DOCTYPE html> <ht
-
JavaScriptでフラットなオブジェクト配列をツリー構造に変換する方法
はじめにWeb開発では、カテゴリ一覧やフォルダ構成、組織図など、階層構造をもつデータを画面に表示したい場面がよくあります。一方で、データベースやAPIから取得したデータは、idとparentIdを持つフラット(一次元)な配列として渡されることがほとんどです。本記事では、こうしたフラットな配列をもとに、子要素を親オブジェクトへリンクさせたツリー構造を組み立て、ネストされたリスト形式で画面に表示するまでの手順を、HTML・CSSのコード付きでわかりやすく解説します。元データとなるフラットな配列まず、変換対象となるデータを確認しましょう。各オブジェクトは、自身の一意な識別子であるid、表示名のnam