var contacts = [ { account: "Acme", firstName: "John", lastName: "Snow" }, { account: "Metal Industries", firstName: "Ted", lastName: "Smith" }, { account: "Acme", firstName: "Sara", lastName: "Butler" }, { account: "HiTech Corp", firstName: "Sam", lastName: "Johnson" }, { account: "HiTech Corp", firstName: "Arnold", lastName: "Williams" }, { account: "Metal Industries", firstName: "Jessica", lastName: "Westcoat" }, { account: "Acme", firstName: "Kyle", lastName: "Johnson" }, { account: "HiTech Corp", firstName: "Jason", lastName: "Fernandez" } ];El objetivo es obtener esta salida:
result = { "Acme": ["John Snow", "Kyle Johnson", "Sara Butler"], "HiTech Corp": ["Arnold Williams", "Jason Fernandez", "Sam Johnson"], "Metal Industries": ["Jessica Westcoat", "Ted Smith"] }Mi función a continuación no devuelve la matriz de valores y solo devuelve el último valor
const convertArrayToObject = (array, key) => { const initialValue = {} return array.reduce((obj, item) => { return {...obj,[item[key]]: item,} }, initialValue) }Cualquier ayuda es apreciada
var contacts = [ { account: "Acme", firstName: "John", lastName: "Snow" }, { account: "Metal Industries", firstName: "Ted", lastName: "Smith" }, { account: "Acme", firstName: "Sara", lastName: "Butler" }, { account: "HiTech Corp", firstName: "Sam", lastName: "Johnson" }, { account: "HiTech Corp", firstName: "Arnold", lastName: "Williams" }, { account: "Metal Industries", firstName: "Jessica", lastName: "Westcoat" }, { account: "Acme", firstName: "Kyle", lastName: "Johnson" }, { account: "HiTech Corp", firstName: "Jason", lastName: "Fernandez" } ]; const convertArrayToObject = (array, key) => { const initialValue = {} array.forEach((obj, item) => { initialValue[obj[key]] = initialValue[obj.account] || [] initialValue[obj[key]].push(`${obj.firstName} ${obj.lastName}`) }) return initialValue } console.log(convertArrayToObject(contacts, 'account'))Estuvo cerca, solo se perdió que cuando configura el objeto en la matriz resultante, debe configurarlo como una matriz; en este script, sería [k]: [v] y no [k]: v
var contacts = [ { account: "Acme", firstName: "John", lastName: "Snow" }, { account: "Metal Industries", firstName: "Ted", lastName: "Smith" }, { account: "Acme", firstName: "Sara", lastName: "Butler" }, { account: "HiTech Corp", firstName: "Sam", lastName: "Johnson" }, { account: "HiTech Corp", firstName: "Arnold", lastName: "Williams" }, { account: "Metal Industries", firstName: "Jessica", lastName: "Westcoat" }, { account: "Acme", firstName: "Kyle", lastName: "Johnson" }, { account: "HiTech Corp", firstName: "Jason", lastName: "Fernandez" } ]; const convertArrayToObject = (array, key) => { const initialValue = {} return array.reduce((obj, item) => { let k = item[key], v=item.firstName + ' ' + item.lastName; if (obj[k]) obj[k].push(v); else obj = { ...obj, [k]: [v] } return obj }, initialValue) } console.log(convertArrayToObject(contacts, 'account'))