Tengo una matriz que quiero cambiar ese elemento de la matriz como un objeto como se muestra a continuación.
let a=['monkey: animal','John:human', 'Rob:human', 'donkey:animal']Necesito la salida como se muestra a continuación;
output={ animal: ['monkey', 'donkey'], human: ['John', 'Rob'] }Aquí hay una solución usando String#split y Array#reduce :
let a = ['monkey: animal','John:human', 'Rob:human', 'donkey:animal']; const output = a .map(text => text.split(':').map(t => t.trim())) .reduce((acc, [name, specie]) => { if (acc[specie]) { acc[specie].push(name); } else { acc[specie] = [name]; } return acc; }, {}); console.log(output);El enfoque ordinario para la agregación de datos:
const arr = ['monkey: animal','John:human', 'Rob:human', 'donkey:animal']; const result = arr.reduce((acc, item) => { const [value, key] = item.split(':').map(e => e.trim()); acc[key] ??= []; acc[key].push(value) return acc; }, {}); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0 }