繁体   English   中英

合并AngularJS中的数组数组

[英]Merge an array of arrays in AngularJS

我有以下控制器,这是堆栈溢出上另一个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.stringify($ scope.listOfServices)的在线JSON表示形式

在此处输入图片说明

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

你可以试试:

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

它应该给你trainServices'对象的数组concated

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM