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。