const arr = [{name:"abc", age:10},{name:"xyz", age:20},{name:"asd", age:12}];Necesita salida como:
{abc: {age:10}, xyz: {age:20}, asd: {age: 12}}Podría usar reduce para recorrer en iteración todos los elementos de la matriz y crear un nuevo objeto con el formato deseado:
const arr = [{name:"abc", age:10},{name:"xyz", age:20},{name:"asd", age:12}]; const result = arr.reduce((acc, currentValue) => { // grab the name in a separate variable and keep the rest of the object in another using object destructuring const { name, ...rest } = currentValue; // use the name as a key in the result and assign the rest as the value acc[name] = rest; return acc; }, {}); console.log(result)Esta respuesta solo funciona si todos los objetos tienen nombres únicos. Si hay duplicados, algunos de los valores se sobrescribirán.
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)¿Es esto suficiente para lo que quieres hacer?
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));