按值对 JSON 进行分组

IT技术 javascript jquery json grouping
2021-03-18 05:27:51

使用 Lever 职位发布 API,我得到了按位置排序的 JSON 结果,我试图弄清楚如何在结果中按“团队”对所有这些结果进行分组,例如Shopify职业页面。

这是代码笔,这是JSON

我尝试在 codepen 的第 38 行添加以下内容以尝试获取团队值,但它没有按预期输出(我每行收到一个字母,这没有帮助):

for (var x in _data[i].postings[j].categories.team)

我敢肯定这可能是超级简单的事情,但我绝对不是一个 javascript 人。任何帮助将非常感激!

1个回答

假设,JSON 输出是

outJSON= 
 [ {
      team: "TeamA",
      name: "Ahmed",
      field3:"val3"
  }, 
{
      team: "TeamB",
      name: "Ahmed",
      field3:"val43"
  }, 
{
      team: "TeamA",
      name: "Ahmed",
      field3:"val55"
  }, 


]

然后看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);

然后,如果您想遍历类别(团队),请获取数组中的所有类别:

Object.keys(groubedByTeam) // return ["TeamA","TeamB"]

然后 :

  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}.`)
       })
  }); 
我确信这很好用,但在没有上下文的情况下它完全超出了我的头脑。我会试着问一些朋友,这样我才能真正了解它如何与提供的 JSON 一起工作。谢谢!
2021-04-17 05:27:51
如果我想通过使用两个字段来应用组怎么办
2021-04-29 05:27:51
你好,能不能写一些解释来帮助我们更好地理解?谢谢
2021-04-30 05:27:51
xs.reduce 不是函数
2021-05-09 05:27:51