'How do I create an object from array of objects using javascript? [closed]

const arr = [{name:"abc", age:10},{name:"xyz", age:20},{name:"asd", age:12}];

Need output as:

{abc: {age:10}, xyz: {age:20}, asd: {age: 12}}


Solution 1:[1]

This answer only works if all objects have unique names. If there are any duplicates, some of the values WILL be overwritten.

const arr = [{name:"abc", age:10},{name:"xyz", age:20},{name:"asd", age:12}];
const newObject = {};

arr.forEach(item => {
  const name = item.name;
  delete item.name;
  newObject[name] = item;
})

console.log(arr)

console.log(newObject)

Solution 2:[2]

Is this enough for what you want to do?

const arr = [
  { name: "abc", age: 10 },
  { name: "xyz", age: 20 },
  { name: "asd", age: 12 },
];

function transform(data) {
  let newObject = {};
  for (let element of data) {
    newObject = { ...newObject, [element.name]: { age: element.age } };
  }
  return newObject;
}

console.log(transform(arr));

Solution 3:[3]

const arr = [
  { name: "abc", age: 10 },
  { name: "xyz", age: 20 },
  { name: "asd", age: 12 },
];

const output = {};

arr.forEach((a) => {
  output[a.name] = {
    age: a.age,
  };
});

console.log(output);

Output

{ abc: { age: 10 }, xyz: { age: 20 }, asd: { age: 12 } }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mplungjan
Solution 2 ThomasG2201
Solution 3 Harsh Mangalam