将一系列数组合并为一个 'parent' 数组 (AngularJS)

Joining a series of arrays into one 'parent' array (AngularJS)

我有一系列数组,其中填充了对象 - 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 变量。

我很确定这里面有很多错误,但我认为提供一些错误的代码总比什么都不提供要好,这样可以更清楚地表明我正在尝试做什么。如果有更好的方法(我相信有),我洗耳恭听。

提前致谢

如果您希望能够从您的视图中访问串联数组,您必须将串联数组附加到 $scope 对象中,因此您必须使用

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

如果您让 var allGroups 不附加到 $scope 对象 allGroups 将是控制器函数的局部变量,并且只能通过闭包使用

你说得对,array1.concat(array2)是个好方法。

现在的问题是,您的 $scope 上是否需要 group1group2?您需要显示它们吗?

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

  • 恢复两个数组并将它们存储在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);

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

代码如下:

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