2016-03-01 65 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); 
相关问题