繁体   English   中英

Javascript-从数组中删除元素

[英]Javascript - removing an element from array

我在网页上的表格中显示来自arraylist的元素。 我想确保一旦用户按下“删除数据”,表中的元素将立即删除,因此用户不必刷新并等待查看新表。 所以我目前正在通过从arraylist中删除元素来做到这一点,下面是代码:

$scope.list= function(Id) {
        var position = $scope.list.indexOf(fooCollection.findElementById({Id:Id}));
        fooCollection.delete({Id:Id});

        if (position>-1) {
            $scope.list.splice(position,1);
        }
        $location.path('/list');
    };

但是我的位置始终是-1,所以无论我删除哪个元素,总是从列表中删除最后一项。

我发现很奇怪,因为我们一开始就在两个不同的列表上进行操作,所以我假设您正在复制初始列表。 这使我能够重现您的错误。 在下一行中,您尝试查找列表中不存在的对象。

var position = $scope.list.indexOf(fooCollection.findElementById({Id:Id}));

尽管我们谈论的是相同的内容,但是这两个对象并不相同,原因是:

indexOf使用严格相等(===或三重相等运算符使用的相同方法)将searchElement与Array的元素进行比较。

因此,这就是您的问题。 您可以在此塞子上看到此图片

快速修复它意味着遍历$ scope.list并找出哪个元素实际上具有正在传递的ID。

您可以使用需要两个参数的javascript的splice方法

arrayObject.splice(param1, param2);

param1->从此索引元素开始删除

param2->不会删除任何元素

就像如果您只想删除第一个元素并且您的数组对象是arrayObject,那么我们可以编写如下代码

arrayObject.splice(0, 1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM