将一系列数组合并为一个 '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
上是否需要 group1
和 group2
?您需要显示它们吗?
如果答案是否定的,那么您可以简单地按照以下步骤操作:
- 恢复两个数组并将它们存储在2个"private"变量中
- 将它们连接到您的
$scope
中的变量集
如果您不显示它们,则不必在 $scope
中设置变量。然后它看起来像这样:
$scope.allGroups = group1.concat(group2)
否则,只能按照你说的去做:
$scope.allGroups = $scope.group1.concat($scope.group2)
编辑
如果你想要一个包含 group1
和 group2
数组的数组,而不仅仅是它们的内容,你可以简单地使用 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);
我有一系列数组,其中填充了对象 - 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
上是否需要 group1
和 group2
?您需要显示它们吗?
如果答案是否定的,那么您可以简单地按照以下步骤操作:
- 恢复两个数组并将它们存储在2个"private"变量中
- 将它们连接到您的
$scope
中的变量集
如果您不显示它们,则不必在 $scope
中设置变量。然后它看起来像这样:
$scope.allGroups = group1.concat(group2)
否则,只能按照你说的去做:
$scope.allGroups = $scope.group1.concat($scope.group2)
编辑
如果你想要一个包含 group1
和 group2
数组的数组,而不仅仅是它们的内容,你可以简单地使用 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);