[英]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.