J'ai un tableau d'objets :
[
{'year': 2019, 'a_academic': 3, 'f_security': 4, ..., 'k_services': 3},
{'year': 2019, 'a_academic': 2, 'f_security': 2, ..., 'k_services': 4},
{'year': 2019, 'a_academic': 3, 'f_security': 3, ..., 'k_services': 1},
...
{'year': 2019, 'a_academic': 3, 'f_security': 3, ..., 'k_services': 3},
]
Comment compter les valeurs de plusieurs propriétés, puis les regrouper, et les enregistrer dans un nouvel objet, par exemple :
{
'a_academic': {
4: 0,
3: 3,
2: 1,
1: 0
},
'f_security': {
4: 1,
3: 2,
2: 1,
1: 0
},
...,
'k_services': {
4: 1,
3: 2,
2: 0,
1: 1
}
}
Je peux le faire en utilisant reduce et en accédant manuellement à la clé, mais seulement pour une propriété :
let count = array.reduce((res, cur) => {
res[cur.a_academic] = res[cur.a_academic] ? res[cur.a_academic] + 1 : 1;
return res;
}, {});
console.log(count);
Résultat :
{
3: 3,
2: 1
}
Comment mettre en œuvre cette méthode de manière efficace pour qu'elle fonctionne pour toutes les autres propriétés, sans y accéder manuellement ?