在角度中添加和删除数组之间的项目

时间:2014-09-27 21:04:36

标签: javascript arrays angularjs

使用角度数组如何在两个数组之间添加和删除元素? 我有$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.
        };
    });

此外,如果我进行了第二次搜索并尝试将第一个数组中的相同成员添加到我的第二个数组(已经拥有此用户),我如何防止向第二个数组(列表)添加重复项?{{0} }。

下面的

是我希望在阵列之间传输的对象的示例。 id字段是唯一性的指标。

1 个答案:

答案 0 :(得分:4)

您可以将index作为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);
    };
}

感谢。