我有一个存储在作用域中的数组,当我在重复中单击一个按钮时,我希望从数组中删除任何具有相同键值的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个项目。任何帮助都会很棒。谢谢!
答案 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;
};