删除数组的第一个项目(如从堆栈中弹出)

IT技术 javascript angularjs
2021-03-11 03:11:47

我有通过ng-repeat. 我也有删除按钮。点击删除按钮将数组的最后一项一项一项删除。普朗克

但我想从第一个项目开始一个一个地删除项目。我怎样才能做到这一点?我用它来删除列表项:

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

有什么办法可以从顶部删除吗?

5个回答

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

var arr = [1, 2, 3, 4]; 
var theRemovedElement = arr.shift(); // theRemovedElement == 1
console.log(arr); // [2, 3, 4]
赞成!假设我想在任何时间点保留一个包含 1000 个元素的数组,并且我每隔一秒左右不断添加新数据,在这种情况下转换的效率如何
2021-04-17 03:11:47
如果您需要遍历整个数组并一次删除一个元素直到数组为空,我建议先反转数组,然后使用pop()而不是shift()as pop()is fast shift()参见stackoverflow.com/questions/6501160/...
2021-04-24 03:11:47

只需使用arr.slice(startingIndex, endingIndex).

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

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

两种方法都有不同的用例。
2021-05-01 03:11:47
另一个优点是链接: [1, 2, 3].slice(1).doSomethingWithTwoAndThree()
2021-05-04 03:11:47
我更喜欢这个,slice()因为slice()它不是侵入性的,也不会像shift()那样改变值本身splice()参见 <!-- 语言:lang-js --> var a = [1, 2, 3] var b = a.shift() a //(2) [2, 3] b //1
2021-05-09 03:11:47
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
完美指导,谢谢!
2021-05-13 03:11:47

普朗克

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

对 .. 进行了更改,现在它将从顶部移除

感谢您指出这一点。如果起点是 0 那么它从顶部开始
2021-05-03 03:11:47

有一个函数叫做shift(). 它将删除数组的第一个元素。

有一些很好的文档和示例