2012-04-06 7 views
0

私はいくつかjsonを持っており、グループ化しようとしています。 私はこれをjavascriptでしようとしています。理想的には、JSONをグループ化して、各グループに番号を割り当ててループすることができればと思います。 私の究極の目的は、どのキーをグループ化するかを選択できるようにすることです。jsonデータをjavascriptと一緒にグループ化するには

私は関数を使用しようとしましたが、成功しませんでした。私はここからどこに行くべきか分からない。

var groupBy = function(array, predicate) { 
    var grouped = {}; 
    for(var i = 0; i < array.length; i++) { 
     var groupKey = predicate(array[i]); 
     if (typeof(grouped[groupKey]) === "undefined") 
      grouped[groupKey] = []; 
     grouped[groupKey].push(array[i]); 
    } 

    return grouped; 
} 

var groupData = groupBy(data, function (obj) { 
    console.log(obj); 
    return obj.category; 
}); 

私のJSONは、私はすべて同じ加盟店契約がグループである、とするためのものです必要なもの

{ 
    "merchantcontract":"My Angel Dream Day Care Center 1 10137.01", 
    "smi_transactiondate":"\/Date(1332831600000)\/", 
    "smi_glamount2":5.8700, 
    "smi_transactionclass":180870001, 
    "smi_transactionclassname":"Residual Agent Commission", 
    "smi_contractprodcutidname":"Traditional", 
    "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}, 

{ 
    "merchantcontract":"My Angel Dream Day Care Center 1 10137.01", 
    "smi_transactiondate":"\/Date(1331622000000)\/", 
    "smi_glamount2":4.5792, 
    "smi_transactionclass":180870001, 
    "smi_transactionclassname":"Residual Agent Commission", 
    "smi_contractprodcutidname":"Traditional", 
    "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}, 

{ 
    "merchantcontract":"Eds Overhead Doors 10150.01", 
    "smi_transactiondate":"\/Date(1333695600000)\/", 
    "smi_glamount2":11.9300, 
    "smi_transactionclass":180870001, 
    "smi_transactionclassname":"Residual Agent Commission", 
    "smi_contractprodcutidname":"Traditional", 
    "smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}, 

あるすべての残留ので、私はglamount2

を追加することができ、これらの内でグループ化されるように
-My Angel Dream Day Care Center 1 10137.01 
--Residual //This could be anything 
----total of glamount2 in the residual of my angle 
--foo 
----total of glamount2 in the foo of my angle 
+2

この混乱しています。既存の関数からどのような出力を得て、何が問題になっていますか? – Hemlock

+0

私はより説明しやすいように自分の投稿に変更を加えました。 – Tom

+1

@Tom:JSONをループさせて 'glamount2'を得るためにJSONを"再グループ化 "する必要がありますか? JSONが配列内に含まれていると仮定すると、 'glamount2'はすでにあなたにアクセス可能であるはずです。 –

答えて

0

多分私は何かを紛失しています(あなたの意図は私には分かりません)。しかし、それらのオブジェクトを繰り返し処理して特定のプロパティを取得するだけであれば、それらを「再グループ化」する必要はありません。

単にオブジェクトを反復し、何でもあなたが必要なプロパティを取得:これは、これらの3(またはそれ以上)のオブジェクトがすべてのこのような単一のアレイ内に含まれていることを前提としてい

​for(var i=0; i < myjson.length; i++){ 
    console.log(myjson[i].smi_glamount2); 
}​ 

var myjson = [{ 
    "merchantcontract": "My Angel Dream Day Care Center 1 10137.01", 
    "smi_transactiondate": "\/Date(1332831600000)\/", 
    "smi_glamount2": 5.8700, 
    "smi_transactionclass": 180870001, 
    "smi_transactionclassname": "Residual Agent Commission", 
    "smi_contractprodcutidname": "Traditional", 
    "smi_agentid": "1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid": "1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}, 
{ 
    "merchantcontract": "My Angel Dream Day Care Center 1 10137.01", 
    "smi_transactiondate": "\/Date(1331622000000)\/", 
    "smi_glamount2": 4.5792, 
    "smi_transactionclass": 180870001, 
    "smi_transactionclassname": "Residual Agent Commission", 
    "smi_contractprodcutidname": "Traditional", 
    "smi_agentid": "1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid": "1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}, 
{ 
    "merchantcontract": "Eds Overhead Doors 10150.01", 
    "smi_transactiondate": "\/Date(1333695600000)\/", 
    "smi_glamount2": 11.9300, 
    "smi_transactionclass": 180870001, 
    "smi_transactionclassname": "Residual Agent Commission", 
    "smi_contractprodcutidname": "Traditional", 
    "smi_agentid": "1d3f44ee-afc3-e011-addf-a4badb1ddef5", 
    "smi_primaryagentid": "1d3f44ee-afc3-e011-addf-a4badb1ddef5" 
}]; 
+0

さて、私は各商人のためにsmi_glamount2値を持っている必要があります。したがって、最初の2つは一緒に追加され、次に次は自動的に追加されます。 – Tom

関連する問題