レッスンに戻る

配列からキー付きオブジェクトを作成する

importance: 4

{id:..., name:..., age:... }の形式でユーザーの配列を受け取ったとします。

配列から、idをキーとして、配列アイテムを値としてオブジェクトを作成するgroupById(arr)関数を作成します。

let users = [
  {id: 'john', name: "John Smith", age: 20},
  {id: 'ann', name: "Ann Smith", age: 24},
  {id: 'pete', name: "Pete Peterson", age: 31},
];

let usersById = groupById(users);

/*
// after the call we should have:

usersById = {
  john: {id: 'john', name: "John Smith", age: 20},
  ann: {id: 'ann', name: "Ann Smith", age: 24},
  pete: {id: 'pete', name: "Pete Peterson", age: 31},
}
*/

このような関数は、サーバーデータを使用したときにとても便利です。

このタスクでは、idが一意であると想定します。同じidを持つ配列アイテムは2つ存在しません。

ソリューションでは、配列.reduceメソッドを使用してください。

テスト付きサンドボックスを開きます。

function groupById(array) {
  return array.reduce((obj, value) => {
    obj[value.id] = value;
    return obj;
  }, {})
}

テスト付きソリューションをサンドボックスで開きます。