我试图用splice删除数组元素,但.splice一直在删除最后一个元素。我传递的索引是正确的。我做错了什么?
$scope.deleteSingleAnswer = function (index) {
console.log(index);
console.log($scope.editAnswers);
$scope.editAnswers.splice(index);
console.log($scope.editAnswers);
};
答案 0 :(得分:1)
试试这个......
$scope.deleteSingleAnswer = function (index) {
console.log(index);
console.log($scope.editAnswers);
$scope.editAnswers.splice(index, 1);
console.log($scope.editAnswers);
};
指定要使用.splice
删除的数量,或者它将从索引中移除到数组的末尾。
来自MDN:
array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)
如果省略deleteCount
,deleteCount
将等于(arr.length - start)。
答案 1 :(得分:1)
您需要指定在该特定索引之后要删除的元素数量。看到这里
splice()方法通过删除来更改数组的内容 现有元素和/或添加新元素。
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(2, 0, "drum");
语法
array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)
参数
启动索引,开始更改数组(原点为0)。如果 大于数组的长度,实际的起始索引将是 设置为数组的长度。如果否定,将开始那么多 数组末尾的元素。
deleteCount可选
一个整数,指示要删除的旧数组元素的数量。如果 deleteCount为0,不删除任何元素。在这种情况下,你应该 指定至少一个新元素。如果deleteCount大于 数组中从开始处开始的元素数量,然后全部 将删除通过数组末尾的元素。如果 deleteCount被省略,deleteCount将等于(arr.length - 开始)。 item1,item2,...可选要添加到数组的元素, 从开始索引开始。如果您没有指定任何元素, splice()只会从数组中删除元素。