Javascript 移除数组的第一项(如从堆栈中弹出)

Javascript 移除数组的第一项(如从堆栈中弹出),javascript,angularjs,Javascript,Angularjs,我已通过ng repeat创建了项目列表。我也有删除按钮。 单击“删除”按钮将逐个删除数组的最后一项 但是我想从第一个项目开始,逐个删除项目。我该怎么做?我使用此选项删除列表项: $scope.index = 1; $scope.remove = function(item) { var index = $scope.cards.indexOf(item); $scope.cards.splice(index, 1); } 有什么方法可以从顶部移除吗 最

我已通过
ng repeat
创建了项目列表。我也有删除按钮。 单击“删除”按钮将逐个删除数组的最后一项

但是我想从第一个项目开始,逐个删除项目。我该怎么做?我使用此选项删除列表项:

  $scope.index = 1;
  $scope.remove = function(item) { 
    var index = $scope.cards.indexOf(item);
    $scope.cards.splice(index, 1);     
  }

有什么方法可以从顶部移除吗

最简单的方法是使用
shift()
。如果您有一个数组,则
shift
函数会将所有内容向左移动

var arr = [1, 2, 3, 4]; 
var theRemovedElement = arr.shift(); // theRemovedElement == 1
console.log(arr); // [2, 3, 4]


对…进行了更改。。现在它将从顶部删除有一个名为
shift()
的函数。 它将删除数组的第一个元素

有一些好处。

只要使用
arr.slice(开始索引,结束索引)

如果未指定
endingIndex
,它将返回从提供的索引开始的所有项目


在您的情况下,
arr=arr.slice(1)

感谢您指出这一点。如果起点为0,则它从topI开始。我更喜欢这个
slice()
,因为
slice()
shift()
splice()
不同,它不是侵入性的,并且不会更改值本身。Cf.var a=[1,2,3]var b=a.shift()a//(2)[2,3]b//1这两种方法都有不同的用例。如果需要遍历整个数组并一次删除一个元素,直到数组为空,我建议先反转数组,然后使用
pop()
而不是
shift()
as
pop()
更快
shift()
。看投票!假设我想在任何时间点保留一个包含1000个元素的数组,并且我每隔一秒左右添加一次新数据,在这样的场景中shift的效率有多高完美的说明,谢谢!
$scope.remove = function(item) { 
    $scope.cards.splice(0, 1);     
  }
const a = [1, 2, 3]; // -> [2, 3]

// Mutable solutions: update array 'a', 'c' will contain the removed item
const c = a.shift(); // prefered mutable way
const [c] = a.splice(0, 1);

// Immutable solutions: create new array 'b' and leave array 'a' untouched
const b = a.slice(1); // prefered immutable way
const b = a.filter((_, i) => i > 0);
const [c, ...b] = a; // c: the removed item