2017-01-03 16 views
0

我想通過填充此JSON對象使用angularjs樹組件中使用lodashJs分組結果:如何angularjs

var myData=[{"agence":"CTM","secteur":"Safi","serie":"CZC1448YZN"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Rabat","serie":"CZC1349G1B"},{"agence":"CTM","secteur":"Rabat","serie":" 2UA0490SVR"},{"agence":"CTM","secteur":"Agdal","serie":" G3M4NOJ"},{"agence":"CTM","secteur":"Essaouira","serie":" CZC1221B85"},{"agence":"Gare Routiere Municipale","secteur":"Essaouira","serie":" CZC145YL3"}] ; 

繼承人的javascript代碼:

var treedata_avm = []; 
for(var i=0; i < myData.length; i++) { 
    // alert('roro '+myData[i].secteur); 
    treedata_avm.push({ 
     label: myData[i].secteur, 
     children: [{ 
      label: myData.agence, 
      children: [myData[i].serie] 
     }] 
    }); 
} 
$scope.my_data = treedata_avm; 

HTML:

<abn-tree tree-data="my_data " tree-control="my_tree" on-select="my_tree_handler(branch)" expand-level="2" initial-selection="Granny Smith" icon-leaf="ti-file" icon-expand="ti-plus" icon-collapse="ti-minus"></abn-tree> 

它工作正常,但我沒有得到預期的bevaviour,我想..我想要的是得到數據組通過SECTEUR和通訊社這樣的:

-Safi 
    -CTM 
     CZC1448YZN 
     2UA13817KT 

-Rabat 
    -CTM 
    CZC1349G1B 
    2UA0490SVR 
    -Agdal 
    G3M4NOJ 

-Essaouira 
    -CTM 
    CZC1221B85 
    -Gare Routiere Municipale 
    CZC145YL3 

回答

0

你可以使用GROUPBY()如要初始化結構:

myData = _.groupBy(this.myData, 'secteur'); 

但你不得不在適當的額外添加(通訊社,系列等)到每個對象。

或者你可以使用_.reduce()來結合兩者(這可能對你更好)。請記住,reduce()也是在純醇」 JavaScript數組的方法所以你不會被迫使用lodash:

_.reduce(this.myData, function(acc, value, key) { 
    (result[key] || result[key] = value).push(acc); 
    return acc; 
}, acc); 
+0

感謝ü爲我想你的第二個答案的答案,但它給出了一個錯誤=> symbole –

+0

啊,這是ES6語法。替換()=> {}與函數(){} – rrd

+0

但循環...我忽略它? –