Converting array of objects to an object of objects in JavaScript

Suppose we have an array of objects like this −

const arr = [{id:1,name:"aa"},{id:2,name:"bb"},{id:3,name:"cc"}];

We are required to write a JavaScript function that takes in one such array and returns an object of the object where the key of each object should be the id property.

Therefore, the output should look like this −

const output = {1:{name:"aa"},2:{name:"bb"},3:{name:"cc"}};

Notice that the id property is used to map the sub-objects is deleted from the sub-objects themselves.


The code for this will be −

const arr = [{id:1,name:"aa"},{id:2,name:"bb"},{id:3,name:"cc"}];
const arrayToObject = arr => {
   const res = {};
   for(let i = 0; i < arr.length; i++){
      const key = arr[i]['id'];
      res[key] = arr[i];
      delete res[key]['id'];
   return res;


And the output in the console will be −

{ '1': { name: 'aa' }, '2': { name: 'bb' }, '3': { name: 'cc' } }