合并 AngularJS 中的数组数组

Merge an array of arrays in AngularJS

我有以下控制器,这是 Stack Overflow 上另一个 OP 的结果。

var getData = function() {
        var swindon = $http.get('(url)/swi/10?expand=true'),
            paddington = $http.get('(url)/pad/10?expand=true'),
            reading = $http.get('(url)/rdg/10?expand=true');
        $q.all([swindon,paddington,reading]).then(function(arrayOfResults) {
            $scope.listOfServices = arrayOfResults;
            console.log($scope.listOfServices);
        });
    };

  getData();

结果是这样的

我现在想做的是将这三个数组连接成一个数组。这些数组在结构上与存储在 trainServices 数组中的记录完全相同

我尝试了一些类似

的方法
$scope.listOfServices = $scope.listOfServices.data.concat(data);

返回未定义

我可以在嵌套的 NG-REPEAT 中使用数组,但我需要从三个数组中过滤掉重复项,因此我需要将它们作为一个数组。数据来自实时提要,因此在数据到达应用程序之前我无法进行查询。

这就是我目前调用数组的方式

<tbody ng-repeat="item in listOfServices">
      <tr ng-repeat="service in item.data.trainServices | customDelayFilter">

我还包含了 JSON JSON.stringify($scope.listOfServices)

的在线表示

不知道为什么顶层说 JSON..那实际上不是输出中的字符串

你可以试试:

$scope.listOfServices = [].concat(...arrayOfResults.map(item => item.data.trainServices));

它应该给你 concated trainServices 对象数组

arrayOfResults.map(item => item.data.trainServices)

此代码在我们的例子中 returns 一个包含三个 trainServices 数组的数组,使用 Array.prototype.map 函数

...arrayOfResults.map(item => item.data.trainServices)

此代码使用 spread 运算符,它使我们能够将数组数组传递给 Array.prototype.concat 函数,该函数合并这些对象数组