拼接删除最后一个元素

时间:2016-11-27 12:40:42

标签: javascript angularjs

我试图用splice删除数组元素,但.splice一直在删除最后一个元素。我传递的索引是正确的。我做错了什么?

$scope.deleteSingleAnswer = function (index) {
  console.log(index);
  console.log($scope.editAnswers);
  $scope.editAnswers.splice(index);
  console.log($scope.editAnswers);
}; 

2 个答案:

答案 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, ...)

如果省略deleteCountdeleteCount将等于(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()只会从数组中删除元素。