如何使用下划线在groupby函数中将对象作为键返回

时间:2015-04-25 07:21:09

标签: javascript angularjs underscore.js

我的json看起来像

enter image description here

我正在尝试使用下划线库

按NodeGroup进行分组
vm.populatedNodeGroups = _($scope.nodes).groupBy(function (o) { 
                return o.NodeGroup.Name;
            });

vm.populatedNodeGroups中,我得到两个密钥(Are One Routers,Are Two Switch),每个密钥有两个数组。

我想要的是两个节点组对象,每个对象有两个数组。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

a working example

我会说,你几乎就在那里。这可能是我们的观点,消耗了下划线groupBy:

<div ng-controller="TheCtrl">

  <div ng-repeat="(key, values) in populatedNodeGroups">
    <h3>{{key}}</h3>
    <ul>
       <li ng-repeat="value in values">{{value | json}}</li>
    </ul>
  </div>
</div>

这是我们的控制器,执行 groupBy

app.controller('TheCtrl', ['$scope', function ($scope) {       

      var result = _(data)
      .groupBy(function (o) { 
        return o.NodeGroup.Name;
      })
      ;

    $scope.populatedNodeGroups = result;

}])

结果就像

区域二开关

  • { "NodeGroup": { "Name": "Area Two Switches" ... } ... }
  • { "NodeGroup": { "Name": "Area Two Switches" ... } ... }

Areaa One Routers

  • { "NodeGroup": { "Name": "Areaa One Routers" ... } ... }
  • { "NodeGroup": { "Name": "Areaa One Routers" ... } ... }

检查行动here