Javascript 在角度阵列中的阵列之间添加和删除项
使用角度数组如何在两个数组之间添加和删除元素? 我有Javascript 在角度阵列中的阵列之间添加和删除项,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,使用角度数组如何在两个数组之间添加和删除元素? 我有$scope.results和$scope.list结果数组是调用WebAPI的结果,我允许用户选择要添加到第二个数组中的元素。如何从第一个添加到第二个,同时从第一个删除 angular.forEach($scope.results, function (item) { if (item.selected) { $scope.list.push(item); //CODE
$scope.results
和$scope.list
结果数组是调用WebAPI的结果,我允许用户选择要添加到第二个数组中的元素。如何从第一个添加到第二个,同时从第一个删除
angular.forEach($scope.results, function (item) {
if (item.selected) {
$scope.list.push(item);
//CODE TO REMOVE item from $scope.results here.
};
});
此外,如果我进行了第二次搜索,并试图将第一个数组中的同一成员添加到第二个数组(已经有此用户)中,如何防止向第二个数组(列表)中添加重复的成员
下面是我希望在阵列之间传输的对象示例。id字段是唯一性的指示器。您可以将索引作为angular.forEach的第二个参数。然后使用拼接从原始阵列中删除该项。检查下面的代码
angular.forEach($scope.results, function (item, index) {
if (item.selected) {
$scope.list.push(item);
$scope.results.splice(index, 1);
};
});
我刚刚意识到在angular.forEach循环中使用splice有一个缺点,即在移除该项后,它将重新索引数组。因此,如果删除某个项目,则将跳过下一个项目
因此,下面是正确的解决方案
var len = $scope.results.length;
while (len--) {
var item = $scope.results[len];
if (item.selected) {
$scope.list.push(item);
$scope.results.splice(len, 1);
};
}
谢谢。您可以查看阵列操作、推送、弹出、拼接等。。。如果您有更具体的问题,请准备一个演示,并向我们展示更多在更多上下文中抛出的代码。我不认为这是重复的,因为它的角度数组添加了haskey和它们自己的id,并且如下所述,拼接会重新索引数组。此外,我将id查询作为唯一性的指示器。在重复中使用“按id跟踪”,您将不再关联haskkey。