javascript - 以 Angular 在数组之间添加和删除项目

标签 javascript arrays angularjs

<分区>

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

此外,如果我进行了第二次搜索并尝试将第一个数组中的相同成员添加到我的第二个数组(已经有该用户),我如何防止将重复项添加到第二个数组(列表)? enter image description 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);
    };
}

谢谢。

关于javascript - 以 Angular 在数组之间添加和删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26079216/

相关文章:

javascript - 使用父 Controller 方法调用测试 Angular

javascript - 表单数据不会在保存时进入解析表

PHP 根据键排序数组,顺序为字母顺序,然后是数字,然后是特殊字符

c - 在函数中操作多维数组

java - 错误的结果 一旦我处理 try and catch

javascript - 单独定义服务和工厂时,Angular 不起作用

javascript - 在 AngularJS 中使用页面上 URL 的参数

javascript - 我可以在 RegExp 声明中即时执行内联函数吗?

javascript - 为什么这个非常简单的 AJAX 脚本不起作用

javascript - Vuejs 是否具有与 jQuery 类似的 API 来远程异步 http 调用(Ajax)?