2016-03-01 97 views
0

我有一系列數組,填充有對象 - 以JSON格式。他們是這個樣子:將一系列數組連接到一個「父」數組(AngularJS)

組1

[ 
    { "name" : "John", 
     "age" : "31" 
    }, 
    { "name" : "Bob", 
     "age" : "33" 
    } 
] 

組2

[ 
    { "name" : "Jim", 
     "age" : "46" 
    }, 
    { "name" : "Harry", 
     "age" : "23" 
    } 
] // ... and so on ... 

在轉角,我怎麼可以加入兩個數組,以形成一個數組的數組?我猜這是group1.concat(group2),或類似的東西?我不知道該怎麼做,但我會在控制器中執行此操作嗎?

目前我有一個$ scope屬性分配給每個變量,我是否會創建一個新的$ scope屬性是每個這些的連接數組?

而且那會是這樣的:

$scope.allGroups = [] 

$scope.allGroups = $scope.group1.concat($scope.group2) 

// since 'allGroups', 'group1', and 'group2' have all been defined can I do... 

allGroups = group1.concat(group2) // ...or does $scope need to be used each time? 

我的目的是(有必要的過濾器),能夠通過所有羣體做一個NG重複,因爲他們現在都被鏈接到一個$範圍變量。

我很確定這是有錯誤的laiden,但我認爲最好是提供一些不好的代碼而不是任何東西,只是讓它更明顯地表明我正在嘗試做什麼。如果有更好的方法(我確信有這些方法),我就會全神貫注。

在此先感謝

+0

你想怎麼造成的? –

+2

你想結束一個包含John,Bob,Jim和Harry的數組嗎?這與數組數組不一樣。 – user814425

+0

好點。那麼將它作爲一個單一的對象數組會很有用,但我希望這個選項也可以將它作爲一個數組數組來使用,所以每個「組」都是這樣組織的,而不僅僅是一個「人」數組,如果這就說得通了。總之 - 我想知道如何兩個。 – Paulos3000

回答

2

你說得對,array1.concat(array2)是很好的使用方法。

現在的問題是,你需要group1group2在你的$scope?你需要展示他們嗎?

如果答案是否定的,那麼你可以簡單地做如下:

  • 恢復這兩個陣列,並將它們存儲在2的「私人」變量
  • 的毗連它們放入一個變量設置成你的$scope

如果您不顯示它們,則不必爲您的$scope設置變量。然後,它看起來就像這樣:

$scope.allGroups = group1.concat(group2) 

否則,沒有其他的選擇,而不是不喜歡你說:

$scope.allGroups = $scope.group1.concat($scope.group2) 

編輯

如果你想包含group1group2數組的數組,而不僅僅是其內容,您可以簡單地使用push()方法如下:

$scope.allGroups = []; 
$scope.allGroups.push(group1, group2); 
+0

進行監視。當然,對於$ scope.allGroups = group1.concat(group2 ),allGroups附加到$ scope對象的事實將使它可見... group1和group2將不需要被連接,因爲它們在新變量中...? – Paulos3000

+1

不需要,因爲'concat'函數會創建一個新對象(與'scope.allGroups'關聯的那個對象(因此附加到您的作用域)。 – Erazihel

+0

那麼,array1.concat(array2)會吐出一個填充了對象的簡單數組嗎?有沒有辦法讓'allGroups'數組成爲一個多維數組[array1],[array2]等等......? – Paulos3000

0

如果您希望能夠從您的視圖,來訪問級聯陣列,你必須串接陣列附着在$scope對象,所以你將不得不使用

$scope.allGroups = $scope.group1.concat($scope.group2) 

如果您離開var allGroups未附加到$scope對象allGroups將是控制器功能的局部變量,並將僅通過關閉可用

+0

正如我上面所說:我不知道爲什麼我需要將group1和group2數組附加到$ scope,因爲它們被連接到所有組,它本身附加到$ scope ...? – Paulos3000

+0

@ Paulos3000如果出於任何原因,你需要顯示單個數組的過濾結果,那麼是將它們附加到'$ scope',否則不要。一般來說,附加到'$ scope'的內容對模板是可見的,並且可能需要監視框架的開銷,因爲它可能需要從角度 – eltonkamami

1

您可以使用concat()將一個數組與另一個數組連接起來。 concat()函數返回數組。

下面是代碼:

$scope.a = [1,2]; 
$scope.b = [3,4]; 
$scope.c = $scope.a.concat($scope.b); 
相關問題