-1

私は JSON ストアを持っています:

{
    "Week": 1145,
    "From": "IN1"
},
{
    "Week": 1145,       
    "From": "IN1"
},
{
    "Week": 1145,        
    "From": "IN2"
},
{
    "Week": 1146,
    "From": "IN1"
},
{
    "Week": 1146,
    "From": "IN2"
} 

たとえば、1146 週の場合、IN1 = 1 と IN2 = 1 を取得し、1145 週の場合、IN1 = 2 と IN2 = 1 を取得します。

データ ストアをループして各パラメーターの IN1 と IN2 をカウントする関数を作成しました。

countBy: function(param){
    var count = {};
    this.each(function(item){
        var type = item.get(param);
        if (Ext.isDefined(count[type])){
            count[type]++;
        } else {
            count[type] = 1;
        }                               
    });
    return count;
}

しかし、問題は、パラメータで「週」を指定すると、各週の IN1 と IN2 がカウントされず、「1145」: 3 と 1146: 2 が返されることですが、私が欲しいのは: "1145" : { IN1 : 2} および "1146" : {IN1 : 1}。

ご協力ありがとうございました!

4

1 に答える 1

1

Fromパラメータとしても渡す必要があります。

以下を試してください:

countBy: function(param, param2){
    var count = {};
    this.each(function(item){
        var type = item.get(param);
        var from = item.get(param2);
        if (type in count){
            if (from in count[type]) {
              count[type][from]++;
            } else {
              count[type][from] = 1;
            } 
        } else {
            count[type] = {};
            count[type][from] = 1;
        }                               
    });
    return count;
}
于 2012-10-11T08:30:35.000 に答える