No obtengo la lógica escrita en la condición if, intenté registrar en la consola el tipo de cuenta, pero no está definido
let people = [ { name: 'Alice', age: 21 }, { name: 'Max', age: 20 }, { name: 'Jane', age: 20 } ]; function groupBy(objectArray, property) { return objectArray.reduce(function (acc, obj) { let key = obj[property] if (!acc[key]) { acc[key] = [] } acc[key].push(obj) return acc }, {}) } let groupedPeople = groupBy(people, 'age') // groupedPeople is: // { // 20: [ // { name: 'Max', age: 20 }, // { name: 'Jane', age: 20 } // ], // 21: [{ name: 'Alice', age: 21 }] // }La reduce es agrupar por cierta propiedad. Esto implica la creación de matrices en el objeto clave de cada agrupación y la inserción de elementos en la matriz. Si un elemento en particular es el primer miembro de su grupo que se encuentra en el curso de la iteración, aún no habrá una matriz en la clave para presionar. De este modo--
if (!acc[key]) { acc[key] = [] } -- verifica si hay una matriz disponible todavía en la tecla para presionar. De lo contrario, agregará una matriz en la clave para que se agreguen los miembros del grupo. Por lo tanto, esta condición if solo se evaluará como true una sola vez para cada grupo: la primera vez que se encuentre un miembro del grupo.