2017-01-16 118 views
1

我有下面的控制器,它是Stack Overflow上另一個OP的結果。在AngularJS中合併陣列陣列

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(); 

導致這樣的事情

enter image description here

我想現在要做的是CONCAT這三個陣列成一個陣列。這些陣列在結構上是絕對相同的與記錄正在存儲的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的在線JSON表示($ scope.listOfServices)

enter image description here

不知道爲什麼最高級別說JSON ..這實際上不是輸出中的字符串

回答

2

你可以試試:

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

它應該給你concated陣列trainServices'對象

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

這段代碼在我們的例子返回三個trainServices數組的數組,採用Array.prototype.map功能

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

驗證碼使用spread運算符,它使我們能夠將我們的陣列數組傳遞給Array.prototype.concat函數,該函數合併那些數組的對象

+0

'Array.concat不是一個函數'..什麼是... arrayOfResults?爲什麼三個點? – MOLEDesign

+0

我更新了我的答案,並用[]替換了Array.concat(本地Array對象的方法,它等於Array.prototype.concat(),[] .concat()),([])。concat())。陣列。如果它仍然不適合你,我會嘗試爲你創造一個重擊者 – Andriy

+0

我只想說,你是我最喜歡的人,今年。完美地工作,實際上是對我所擁有的巨大改進。我現在有一個所有合併服務的美麗列表。太棒了! – MOLEDesign