Tengo una matriz que se ve así:
let arr = [ {'option1':1},{'option1':1},{'option1':1}, {'option1':2},{'option1':2}, {'option1':3}, {'option2':1},{'option2':1} ]
Necesito iterar a través de la matriz y contar las ocurrencias de cada elemento con la misma propiedad para que se muestre así:
option1:{ 1:3, 2:2, 3:1, }, option2:{ 1:2, }
Básicamente, digo que la opción 1 con una propiedad de 1 tiene 3 cuentas, la opción 1 con una propiedad de 2 tiene 2 cuentas, la opción 1 con una propiedad de 3 tiene 1 cuenta y así sucesivamente.
Por aquí...
let arr = [ { option1: 1 }, { option1: 1 }, { option1: 1 } , { option1: 2 }, { option1: 2 } , { option1: 3 } , { option2: 1 }, { option2: 1 } ] let obj = arr.reduce((r,o)=> { let [name,num] = Object.entries(o)[0] if (!r[name]) r[name] = {} if (!r[name][num]) r[name][num] = 1 else r[name][num]++ return r },{}) console.log( obj )
.as-console-wrapper { max-height: 100% !important; top: 0 }