angular,从具有相同键值的范围中删除任何内容

时间:2014-09-22 21:32:05

标签: javascript angularjs

我有一个存储在作用域中的数组,当我在重复中单击一个按钮时,我希望从数组中删除任何具有相同键值的skillId。这是我的尝试

$scope.deleteSkill = function(skill) {  

     for (var i=0; i<$scope.pathArray.length; i++){

        if($scope.pathArray[i].skillId == skill){
            $scope.pathArray.splice(i,1);
        }
    };

};

删除是在项目的重复,并且传递的“技能”是它的技能ID(这是好的)。我试图遍历范围数组并删除具有相同skillId的任何内容。我尝试循环,并检查skillId =技能。我当前的逻辑似乎不起作用,如果有倍数,它只删除1个项目。任何帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分:2)

诀窍是将数组从 end 循环到开头,因为数组的长度会因删除元素而发生变化。

$scope.deleteSkill = function (skill) {
    for (var i = $scope.pathArray.length - 1; i >= 0; i--) {
        if ($scope.pathArray[i].skillId == skill) {
            $scope.splice(i, 1);
        }
    };
};

答案 1 :(得分:1)

继续上面的评论,做一些像对比

那样简单的事情
$scope.deleteSkill = function(skill)
{
    var temp = [];
    for (var i = 0; i < $scope.pathArray.length; i++)
    {
      if ($scope.pathArray[i].skillId != skill) temp.push(skill) //push skill or whatever the array value is
    }
    $scope.pathArray = temp;
};