2016-07-06 118 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 
     } 
    ] 
    ] 
] 

有很多更真實的數據,但我已經剝離下來到真的是我想要的組。目前,每個文件夾都有一個密碼和一年,並且我希望它們能夠在數年內按密碼分組,以便我可以在UI中顯示年份,然後顯示適合特定密碼的所有文件夾。

雖然也請注意,我將要在UI顯示年份和密碼(只有一次,與下面的分組的項目!)

如果需要任何進一步的細節,請詢問。每年按年

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

的溶液中的第一組,然後組的密碼:

回答

2

這應該做你想要什麼:

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

並配有全功能的高清版本。

+0

這工作就像一個魅力!我只想說Visual Studio 2013在'=>'中用'>'符號表示語法錯誤。 JavaScript運行儘管,爲什麼這可能是任何想法?非常感謝! –

+0

事實證明'=>'在IE 10中不起作用。是否有可用的替代語法? –

+0

完美!全功能的方法工作!我曾嘗試修改代碼以使用某個函數,但我做了一些非常愚蠢的事情。謝謝你的幫助! –