0

私はいくつかのjsonを持っていて、それをグループ化しようとしています。私はjavascriptでこれをやろうとしています。理想的には、JSON をグループ化し、各グループに番号を割り当ててループできるようにしたいと考えています。私の最終的な目標は、グループ化するキーを選択できる関数を持つことです。

関数を使用しようとしましたが、成功しませんでした。ここからどこへ行けばいいのかわからない。

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
4

1 に答える 1

0

おそらく私は何かを見逃しています(あなたの意図は私を混乱させます)が、それらのオブジェクトを繰り返し処理して特定のプロパティを取得する必要がある場合は、それらを「再グループ化」する必要はありません。

オブジェクトを反復処理して、必要なプロパティを取得するだけです。

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

これは、これらの 3 つ (またはそれ以上) のオブジェクトがすべて、次のような単一の配列内に含まれていることを前提としています。

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"
}];
于 2012-04-06T23:57:52.460 に答える