2012-06-06 5 views
1

전체 데이터베이스 레코드를 포함하는 json 데이터가 있습니다. 이제이 반환 json 데이터에서 특정 카테고리를 기준으로 그룹화를 수행해야합니다.JSON 데이터 그룹 by

정렬은 json 데이터에서 쉽게 수행 할 수 있다고 생각하지만 그룹과 함께 갈 수 있는지는 잘 모르겠습니다. 특정 데이터 집합을 기준으로 그룹화해야합니다.

어떤 도움이나 제안이라도 도움이 될 것입니다.

감사

답변

1

확인 http://linqjs.codeplex.com 또는 http://jslinq.codeplex.com 라비. 그것은 LINQ를 모방 한 자바 스크립트 라이브러리입니다. 여기에 당신과 같은 다른 질문입니다 : U에 대한 Javascript Dynamic Grouping

+0

덕분에 답을 r에. LINQ는 우리가 사내 언어로 작업하면서 mycase에서 결코 의미가 없습니다. 우리는 javascript 엔진을 실행하는 자체 프레임 워크를 개발했습니다. 그래서 제 3 자 프레임 워크 (예 : .NET)없이 자바 스크립트 수준에서이 그룹을 수행해야합니다. – ravi

+1

@ravi - linqjs는 .net과 아무런 관련이없는 순수한 자바 스크립트 라이브러리입니다. 그냥 linq 쿼리 기능을 모방. –

+0

감사합니다. Elian. 하지만 난 우리의 개발에 매우 ​​다른 접근 방식을 알고 있습니다. 나는 데스크톱 응용 프로그램을위한 자바 스크립트를 작성하고 있습니다. 어쨌든 LINQ.js가 없으면 어떻게 될지 알 수 있습니까? – ravi

2
var obj = [{ "session":"1","page":"a"}, 
     { "session":"1","page":"b"}, 
     { "session":"1","page":"c"}, 
     { "session":"2","page":"d"}, 
     { "session":"2","page":"f"}, 
     { "session":"3","page":"a"}]; 

function GroupBy(myjson,attr){ 
    var sum ={}; 

    myjson.forEach(function(obj){ 
     if (typeof sum[obj[attr]] == 'undefined') { 
     sum[obj[attr]] = 1; 
     } 
     else { 
     sum[obj[attr]]++; 
     } 
    }); 
    return sum; 
} 

var result = GroupBy(obj,"page"); 

console.log("GroupBy:"+ JSON.stringify(result)); 
/// GroupBy(obj,"session") --> GroupBy:{"1":3,"2":2,"3":1} 
/// GroupBy(obj,"page") --> GroupBy:{"a":2,"b":1,"c":1,"d":1,"f":1} 
0
var obj = [{Poz:'F1',Cap:10},{Poz:'F1',Cap:5},{Poz:'F1',Cap:5},{Poz:'F2',Cap:20},{Poz:'F1',Cap:5},{Poz:'F1',Cap:15},{Poz:'F2',Cap:5},{Poz:'F3',Cap:5},{Poz:'F4',Cap:5},{Poz:'F1',Cap:5}]; 
Array.prototype.sumUnic = function(name, sumName){ 
    var returnArr = []; 
    var obj = this; 
    for(var x = 0; x<obj.length; x++){ 
     if((function(source){ 
      if(returnArr.length == 0){ 
       return true; 
      }else{ 
       var isThere = []; 
       for(var y = 0; y<returnArr.length; y++){ 
        if(returnArr[y][name] == source[name]){ 
         returnArr[y][sumName] = parseInt(returnArr[y][sumName]) + parseInt(source[sumName]); 
         return false; 
        }else{ 
         isThere.push(source); 
        } 
       } 
       if(isThere.length>0)returnArr.push(source); 
       return false; 
      } 
     })(obj[x])){ 
      returnArr.push(obj[x]); 
     } 
    } 
    return returnArr; 
} 
obj.sumUnic('Poz','Cap'); 
// return "[{"Poz":"F1","Cap":45},{"Poz":"F2","Cap":25},{"Poz":"F3","Cap":5},{"Poz":"F4","Cap":5}]"