2012-06-28 13 views
17

申し訳ありませんこれまでに質問されている場合は申し訳ありませんが、達成しようとしているものの良い例は見つかりませんでした。たぶん、私はちょうどいいものを探しているわけではない。どこかの説明があれば修正してください。とにかく...Javascript json data grouping

私はグループ、または私が達成でしょうどのように...

{"Result":[ 
    {"ML":[ 
     {"TeamName":"Team 1","League":"League 1"}, 
     {"TeamName":"Team 2","League":"League 2"}, 
     {"TeamName":"Team 3","League":"League 3"} 
    ]}, 
    {"3A":[ 
     {"TeamName":"Team 4","League":"League 1"}, 
     {"TeamName":"Team 5","League":"League 2"}, 
     {"TeamName":"Team 6","League":"League 3"} 
    ]}, 
    {"2A":[ 
     {"TeamName":"Team 7","League":"League 1"}, 
     {"TeamName":"Team 8","League":"League 2"}, 
     {"TeamName":"Team 9","League":"League 3"} 
    ]} 
]} 

のような再構築をしたいと思いますので...

{"Result":[ 
    {"Level":"ML","TeamName":"Team 1","League":"League 1"}, 
    {"Level":"ML","TeamName":"Team 2","League":"League 2"}, 
    {"Level":"ML","TeamName":"Team 3","League":"League 3"}, 
    {"Level":"3A","TeamName":"Team 4","League":"League 1"}, 
    {"Level":"3A","TeamName":"Team 5","League":"League 2"}, 
    {"Level":"3A","TeamName":"Team 6","League":"League 3"}, 
    {"Level":"2A","TeamName":"Team 7","League":"League 1"}, 
    {"Level":"2A","TeamName":"Team 8","League":"League 2"}, 
    {"Level":"2A","TeamName":"Team 9","League":"League 3"}, 
]} 

のような構造JSONデータを持っていますこれはJavascript/jQueryでですか?残念ながら私はサーバーが私に送るものを編集できません。

+8

を[あなたは何を試してみました?](http://whathaveyoutried.com/)これは些細な問題です... –

+0

にJSONに変換オブジェクトを他のオブジェクトにコピーし、2番目のオブジェクトをjsonに変換します。あなたはそれを行うことができます。 –

+0

@ JonathanM最後のステップは必要ではないかもしれません。なぜなら、ある時点で実際にオブジェクトで何かをしたいと思っているからです。 –

答えて

26

ただ、オブジェクトにそれをすべてのトラックを保持:

let groups = Object.create(null); 

data.forEach(item => { 
    if (!groups[item.Level]) { 
     groups[item.Level] = []; 
    } 

    groups[item.Level].push({ 
     TeamName: item.TeamName, 
     League: item.League 
    }); 
}); 

let result = 
    Object.entries(groups) 
     .map(([k, v]) => ({[k]: v})); 
+0

forループ(および次の行)を 'for(item in data)'に単純化できますか? –

+2

@TimothyAaron:いいえ、JavaScriptの 'for for'ループは値ではなくキーを反復処理し、配列全体を反復処理するために使用しないでください。だから、我々はまだそれぞれのための普及を待っている:D – Ryan

+0

彼は彼がjQueryを使用していると言っているので、あなたは$。 – Julian