2016-07-06 1 views
0

죄송합니다. 중복 된 것처럼 보이지만 다른 답변을 시도했지만 제대로 작동하지 않는 것 같습니다. AngularJS SPA를 구축 중이며 다음 형식의 데이터가 있습니다.중첩 배열을 underscore.js로 그룹화

"folders": [ 
    { 
    "id": 1, 
    "password": "WPAUGOR452", 
    "year": 2013 
    }, 
    {   
    "id": 2, 
    "password": "WPAUGOR452", 
    "year": 2013 
    }, 
    {   
    "id": 3, 
    "password": "DFGOERJ305", 
    "year": 2014 
    } 

등 많은 데이터가 있습니다.

"folders": [ 
    "2013": [ 
    "WPAUGOR452": [ 
     { 
     "id": 1, 
     "password": WPAUGOR452, 
     "year": 2013, 
     }, 
     { 
     "id": 2, 
     "password": WPAUGOR452, 
     "year": 2013, 
     }    
    ] 
    ], 
    "2014": [ 
    "DFGOERJ305": [ 
     {   
     "id": 3, 
     "password": "DFGOERJ305", 
     "year": 2014 
     } 
    ] 
    ] 
] 

실제 데이터에 더 많은있다,하지만 난에 의해 그룹에 원하는 것을 정말로 그것을 아래로 제거했습니다

내가는이처럼 있도록 폴더를 그룹화하고 싶다. 현재 모든 폴더에는 암호와 1 년이 있으며 몇 년 내에 암호로 그룹화하여 연도를 UI에 표시 한 다음 특정 암호에 적합한 모든 폴더를 표시 할 수 있도록합니다.

또한 내가 (아래 그룹화 된 항목, 한 번만!) UI에서 연도와 암호를 표시하기 위해 더 상세이 필요한 경우

할 것입니다 점에 유의하시기 바랍니다 있지만

은 문의하시기 바랍니다.

답변

2

이것은 당신이 원하는 일을해야합니다

var result = _.chain(folders) 
    .groupBy('year') 
    .mapObject(year => _.groupBy(year, 'password')) 
    .value(); 

그리고 전체 함수 정의와 버전 :

var result = _.chain(folders) 
    .groupBy('year') 
    .mapObject(function(year) { 
     return _.groupBy(year, 'password'); 
    }) 
    .value(); 

솔루션 첫 해에 의해 그룹과 다음 그룹을 암호로 매년 그룹.

+0

이것은 매력처럼 작동했습니다! 저는 Visual Studio 2013에서'=>'에'> '기호로 구문 오류가 있다고 말하고 싶습니다. 자바 스크립트가 실행되는 이유는 무엇일까요? 고마워요! –

+0

IE 10에서는'=>'이 작동하지 않는다는 것을 알았습니다. 대체 구문을 사용할 수 있습니까? –

+0

완벽! 전체 함수 메서드가 작동합니다! 나는 함수로 동작하도록 코드를 수정하려고했지만 정말 바보 같은 일을했다. 당신의 도움을 주셔서 감사합니다! –