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

【JavaScript】オブジェクトの配列を1つのオブジェクトに変換する方法

オブジェクトの配列を1つのオブジェクトに変換するには?

まずは、変換元となるデータを確認しましょう。以下のような、名前(name)と点数(score)を持つオブジェクトの配列を想定します。

const arr = [
    {"name": "Rahul", "score": 89},
    {"name": "Vivek", "score": 88},
    {"name": "Rakesh", "score": 75},
    {"name": "Sourav", "score": 82},
    {"name": "Gautam", "score": 91},
    {"name": "Sunil", "score": 79},
];

この配列を受け取り、「name」の値をキー(プロパティ名)、「score」の値を対応する値とするオブジェクトを生成する関数を作成します。期待する出力は次のとおりです。

{ Rahul: 89, Vivek: 88, Rakesh: 75, Sourav: 82, Gautam: 91, Sunil: 79 }

方法1:for ループで変換する

最も基本的なのは、for ループで配列を先頭から順に走査し、各要素の name をキーとして score を代入していく方法です。分割代入を使えば、各要素から name と score を簡潔に取り出せます。

const buildObject = arr => {
    const obj = {};
    for (let i = 0; i < arr.length; i++) {
        const { name, score } = arr[i];
        obj[name] = score;
    }
    return obj;
};

console.log(buildObject(arr));

コンソールには次のように出力されます。

{ Rahul: 89, Vivek: 88, Rakesh: 75, Sourav: 82, Gautam: 91, Sunil: 79 }

方法2:Array.prototype.reduce() で変換する

より関数型的に記述したい場合は、Array.prototype.reduce() が便利です。初期値として空オブジェクト {} を渡し、各要素を処理するたびにキーと値を追加していきます。

const buildObject = arr =>
    arr.reduce((acc, { name, score }) => {
        acc[name] = score;
        return acc;
    }, {});

console.log(buildObject(arr));
// { Rahul: 89, Vivek: 88, Rakesh: 75, Sourav: 82, Gautam: 91, Sunil: 79 }

方法3:Object.fromEntries() で変換する(ES2019以降)

モダンな環境では、map()Object.fromEntries() を組み合わせることで、さらに簡潔に書くこともできます。

const buildObject = arr =>
    Object.fromEntries(arr.map(({ name, score }) => [name, score]));

console.log(buildObject(arr));
// { Rahul: 89, Vivek: 88, Rakesh: 75, Sourav: 82, Gautam: 91, Sunil: 79 }

まとめ

  • オブジェクトの配列を1つのオブジェクトに変換するには、for ループや reduce() を使う方法が基本です。
  • ES2019 以降の環境では、Object.fromEntries()map() の組み合わせが最も簡潔です。
  • いずれの方法でも、「name をキー、score を値」というマッピング処理という考え方は共通しています。
  1. JavaScriptのlengthプロパティで配列オブジェクトの長さを取得する方法

    JavaScriptにおけるlengthプロパティとはJavaScriptのlengthプロパティは、文字列や配列などのオブジェクトが持つ要素数(サイズ)を返すために使用されます。配列の場合は格納されている要素の個数、文字列の場合は文字数を取得できます。ここでは、文字列と配列オブジェクトの長さをlengthプロパティで取得するサンプルコードを紹介します。サンプルコード以下の例では、ボタンをクリックすると配列の長さが画面に表示される仕組みを実装しています。<!DOCTYPE html> <html lang="ja"> <head> <

  2. JavaScriptで配列をSet(セット)に変換する方法

    JavaScriptで配列をSetに変換するときの基本JavaScriptでは、Setオブジェクトを使うことで、配列から重複しない一意の値だけを持つコレクションを簡単に作成できます。SetはES6(ECMAScript 2015)で導入された組み込みオブジェクトで、同じ値が複数回追加されても自動的に1つにまとめられるのが特徴です。変換自体は非常にシンプルで、new Set(配列)と書くだけで完了します。コード例:配列からSetへの変換以下は、重複を含む配列をSetに変換して画面に表示するサンプルコードです。<!DOCTYPE html> <html lang=ja> &