rob*_*ler 8 javascript jquery grouping json
使用杠杆作业发布API,我得到按位置排序的JSON结果,我正在尝试弄清楚如何在结果中按"团队"对所有结果进行分组,例如Shopify职业页面.
我尝试在codepen的第38行添加以下内容以尝试获取团队值,但它没有按预期输出(我每行收到一个字母,这没有帮助):
for (var x in _data[i].postings[j].categories.team)
Run Code Online (Sandbox Code Playgroud)
我敢肯定它可能是超级简单的东西,但我绝对不是一个javascript的家伙.任何帮助将非常感激!
Abd*_*UMI 23
假设,JSON输出是
outJSON=
[ {
team: "TeamA",
name: "Ahmed",
field3:"val3"
},
{
team: "TeamB",
name: "Ahmed",
field3:"val43"
},
{
team: "TeamA",
name: "Ahmed",
field3:"val55"
},
]
Run Code Online (Sandbox Code Playgroud)
然后groupBy
在下面的DEMO中查看功能:
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);
Run Code Online (Sandbox Code Playgroud)
然后,如果您想循环遍历类别(团队),请获取数组中的所有类别:
Object.keys(groubedByTeam) // return ["TeamA","TeamB"]
Run Code Online (Sandbox Code Playgroud)
然后 :
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}.`)
})
});
Run Code Online (Sandbox Code Playgroud)