Javascript - 从数组中删除元素

时间:2015-07-07 08:41:40

标签: javascript jquery angularjs

我在网页上的表格中显示元素列表中的元素。我想确保一旦用户按下"删除数据",就会立即删除表中的元素,这样用户就不必刷新并等待查看新表。所以我现在通过从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,所以无论我删除哪个元素,总是从列表中删除最后一项。

2 个答案:

答案 0 :(得分:0)

我发现很奇怪你我们开始在两个不同的列表上操作,所以我假设你正在获取初始列表的副本。这使我能够重现你的错误。在下一行中,您试图找到列表中不存在的对象。

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

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

  

indexOf使用strict将searchElement与Array的元素进行比较   相等(===使用的相同方法,或三等于,   操作者)。

所以你的问题就在于此。您可以在此plunker上看到此内容。

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

答案 1 :(得分:-1)

你可以使用javascript的拼接方法,它采用两个参数

arrayObject.splice(param1, param2);

param1 - >从这个索引元素将开始删除

param2 - >不会删除任何元素

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

arrayObject.splice(0, 1);