2012-10-11 3 views
-1

내가 JSON 매장이 있습니다각 매개 변수에 대해 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 주 1,145을 위해 내가 얻을 것 IN1 = 2 및 IN2 = 나는 각 PARAM에 대한 IN1과 IN2를 계산하는 내 데이터 저장소를 통해 루프 기능 작성한 1.

:

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; 
} 

그러나 문제를 내가 주간에 param에 "Week"를 주면 각 주당 IN1과 IN2를 계산하지 않고 "114 5 ": 3 및 1146 : 2,하지만 내가 원하는 것은"1145 ": {IN1 : 2} 및"1146 ": {IN1 : 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; 
} 
+0

덕분에, 그것은 작동 (후 제거 그냥 닫는 괄호가 (만약 카운트 타입)). 각 값을 어떻게 구별 할 수 있는지 알고 계십니까? 매주 IN1과 IN2의 합계를 저장하고 차트를 그릴 때 사용해야합니다. 나는 이것을했다 : var countObject = myStore.countBy ("Week", "From"); console.log (Ext.encode (countObject.IN2)) IN2를 얻으려면 (저는 매우 순진하다고 알고 있지만 저는 extjs와 javascript를 처음 사용합니다). 하지만 null을 반환합니다. 변수에 저장하고 차트에 사용하고 싶습니다. 미리 감사드립니다. – salamey

관련 문제