web-dev-qa-db-ja.com

値によるJSONのグループ化

Lever求人投稿APIを使用して、JSONの結果を場所で並べ替えて取得します Shopify ページ。

これが codepen で、ここが [〜#〜] json [〜#〜] です。

コードペンの38行目に次のコードを追加して、チームの値を取得しようとしましたが、期待どおりに出力されません(1行に1文字が表示されるため、役に立ちません)。

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

たぶんそれは非常に単純なものだと確信していますが、私は間違いなくJavaScriptの人ではありません。どんな助けでも大歓迎です!

9
robotsmeller

JSON出力が

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


]

次に、以下のデモのgroupBy関数を参照してください。


デモ :

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}.`)
       })
  }); 
23
Abdennour TOUMI