En utilisant l'API de publication d'emplois Lever, j'obtiens les résultats JSON triés par emplacement et j'essaie de comprendre comment regrouper tous ces résultats par "équipe" dans les résultats, comme les carrières Shopify page.
Voici le codepen et voici le JSON
J'ai essayé d'ajouter ce qui suit à la ligne 38 du codepen pour essayer de saisir les valeurs de l'équipe, mais cela ne sort pas comme prévu (je reçois une lettre par ligne, ce qui n'est pas utile):
for (var x in _data[i].postings[j].categories.team)
Je suis sûr que c'est probablement quelque chose de super simple, mais je ne suis certainement pas un gars javascript. Toute aide serait très appréciée!
Supposons que la sortie JSON est
outJSON=
[ {
team: "TeamA",
name: "Ahmed",
field3:"val3"
},
{
team: "TeamB",
name: "Ahmed",
field3:"val43"
},
{
team: "TeamA",
name: "Ahmed",
field3:"val55"
},
]
Voir ensuite la fonction groupBy
dans la DEMO ci-dessous:
outJSON= [ {team: "TeamA",name: "Ahmed",field3:"val3"}, {team: "TeamB",name: "Ahmed",field3:"val43"}, {team: "TeamA",name: "Ahmed",field3:"val55"} ]
var groupBy = function(xs, key) {
return xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).Push(x);
return rv;
}, {});
};
var groubedByTeam=groupBy(outJSON, 'team')
console.log(groubedByTeam);
Ensuite, si vous souhaitez parcourir les catégories (équipes), obtenez toutes les catégories dans le tableau:
Object.keys(groubedByTeam) // return ["TeamA","TeamB"]
puis :
Object.keys(groubedByTeam).forEach(function(category){
console.log(`Team ${category} has ${groubedByTeam[category].length} members : `);
groubedByTeam[category].forEach(function(memb,i){
console.log(`---->${i+1}. ${memb.name}.`)
})
});