Javascript関数に次のJSONデータがあります(ここでは簡略化されています)。
var data = [
{ Expiry: "2013-01-02T00:00:00", EndDate: "2013-01-16T00:00:00", Category: 10, Amount: 14.53 },
{ Expiry: "2013-01-02T00:00:00", EndDate: "2013-01-16T00:00:00", Category: 25, Amount: 14.86 },
{ Expiry: "2013-02-06T00:00:00", EndDate: "2013-02-20T00:00:00", Category: 10, Amount: 14.43 },
{ Expiry: "2013-02-06T00:00:00", EndDate: "2013-02-20T00:00:00", Category: 25, Amount: 14.76 }
];
注:EndDate値は、特定のExpiry値に対して常に同じになります。
理想的には、最後に次のJSONを付けたいと思います(有効期限でグループ化され、プロパティ名でのカテゴリ値の使用に注意してください)。
[
{
Expiry: 2013/1/2, (note: not fussed about the date format)
EndDate: 2013/1/16,
Category10: 14.53,
Category25: 14.86
},
{
Expiry: 2013/2/6,
EndDate: 2013/2/20,
Category10: 14.43,
Category25: 14.76
},
]
しかし、すべてを一度に取得できるかどうかはわかりません。そのため、各日付ペアの下にある一連のカテゴリと金額を処理して、上記を何らかの方法で取得することができます。
[
{
Expiry: 2013/1/2,
EndDate: 2013/1/16,
Categories: [ { 10, 25 } ],
Amounts: [ { 14.53, 14.86 } ]
},
{
Expiry: 2013/2/6,
EndDate: 2013/2/20,
Categories: [ { 10, 25 } ],
Amounts: [ { 14.43, 14.76 } ]
},
]
linq.jsライブラリのgroupby関数を使用して必要なJSONを取得しようとしていますが、必要なものに到達できません。
次のように:
var result = linq.groupBy("$.Expiry", "", "k,e => { Expiry: k, Categories: e.select('$.Category').toArray(), Amounts: e.select('$.Amount').toArray()}").toArray();
私は得る:
[
{
Expiry: 2013/1/2,
Categories: [ { 10, 25 } ],
Amounts: [ { 14.53, 14.86 } ]
},
{
Expiry: 2013/2/6,
Categories: [ { 10, 25 } ],
Amounts: [ { 14.43, 14.76 } ]
},
]
しかし、EndDateを取得する方法を理解することはできません...
誰かが助けることができますか?
タ、