如何使用lodashJs将结果分组为angularjs

时间:2017-01-03 09:39:58

标签: javascript angularjs

我试图通过此JSON对象使用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 ..我想要的是通过像这样的业余和年龄得到数据组:

-Safi
   -CTM
      CZC1448YZN
      2UA13817KT

-Rabat
  -CTM
     CZC1349G1B
     2UA0490SVR
  -Agdal
     G3M4NOJ

-Essaouira
  -CTM
     CZC1221B85
  -Gare Routiere Municipale
     CZC145YL3

1 个答案:

答案 0 :(得分:0)

您可以使用groupBy()根据需要初始化结构:

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

但是你必须为每个对象添加适当的额外内容(agence,serie等)。

或者你可以使用_.reduce()将两者结合起来(这对你来说可能更好)。请记住,reduce()也是Plain Ol&#39;中阵列的一种方法。 JavaScript因此您不会被迫使用lodash:

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