如何_.flatten与父数组和嵌套的数组? (lodash)

时间:2015-02-03 23:26:10

标签: javascript arrays angularjs lodash

我有一个名为sports的数组,在该数组中是另一个名为leagues的数组,但我需要这些数组成为_.flatten,因为我遇到了Angular过滤器的问题。

查看数据,在包含"name":"Live Betting"的第一个数组中,还有另一个名为"leagues"的数组,这些是我正在讨论的数组。

[
  {
    "id": 26,
    "name": "LIVE Betting",
    "priority": 0,
    "leagues": [
      {
        "id": 3042,
        "parent": 1000,
        "name": "LIVE BETTING - NBA",
        "sport": {
          "id": 26,
          "name": "LIVE Betting"
        },
        "lineType": "G",
        "priority": [
          0,
          0
        ],
        "part": "0"
      },
      ...

这是一个承诺返回该数组的决心,因为你知道数据是由Sports

返回的
      resolve: {
        Sports: function(SportsFactory, AuthFactory, $q) {
          var defer = $q.defer();
          AuthFactory.getCustomer().then(function(customer) {
            SportsFactory.getSportsWithLeagues(customer).then(function(sports) {                  
              defer.resolve(sports);
            });
          });
          return defer.promise;
        }
      }

这里是我调用解析器Sports

的控制器
  .controller('SportsController', function($scope, AuthFactory,
               SportsFactory, Sports) {
    console.log(angular.toJson(Sports, 'pretty'));
    $scope.sports = [];
    $scope.sportPromise = Sports;

这是一个Plunkr,让您更轻松地查看http://plnkr.co/edit/FJ45nV6gdwp3SkRglPeW?p=info

1 个答案:

答案 0 :(得分:1)

我不确定我完全明白你在寻找什么,但我认为你可以做到以下几点。

在控制器中添加一个函数来创建扁平化数组:

 $scope.leagues = function(){
  var allLeagues = [];
  _.each(mySports, function(sport){
    allLeagues.push.apply(allLeagues, sport.leagues);
  });
  return allLeagues;
};

然后你可以绑定到联赛功能:

<div ng-repeat="league in leagues() | filter:query">
  {{league.name}}
</div>