将一系列数组加入到一个父母的父母中。数组(AngularJS)

时间:2016-03-01 09:34:30

标签: arrays angularjs join multidimensional-array concat

我有一系列数组,用JSON格式填充对象。他们看起来像这样:

第1组

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

第2组

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

在Angular中,如何连接两个数组以形成数组数组?我猜它是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-repeat,因为它们现在都将链接到一个$ scope变量。

我非常确定那些有错误的laiden,但我认为提供一些不好的代码比没有任何东西更好,只是因为我试图做的更明显。如果有更好的方法(我确信有),我全心全意。

提前致谢

3 个答案:

答案 0 :(得分:2)

你是对的,array1.concat(array2)是一个很好用的方法。

现在问题是,您需要group1group2加入$scope吗?你需要展示它们吗?

如果答案是否定的,那么您可以按照以下步骤操作:

  • 恢复两个阵列并将它们存储在2" private"变量
  • 将它们转换为$scope
  • 中设置的变量

如果您不显示变量,则无需将变量设置到$scope。它将如下所示:

$scope.allGroups = group1.concat(group2)

否则,没有别的选择比你说的那样:

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

修改

如果您想要一个包含group1group2数组的数组,而不仅仅是其内容,您只需使用push()方法,如下所示:

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

答案 1 :(得分:1)

如果您希望能够从视图中访问连接数组,则必须在$scope对象中附加连接数组,因此您必须使用

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

如果您var allGroups没有附加到$scope对象allGroups将成为控制器功能的局部变量,并且只能通过闭包

答案 2 :(得分:1)

您可以使用concat()将一个数组与另一个数组连接起来。 concat()函数返回一个数组。

以下是代码:

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