2015-04-13 10 views
33

Ho una lista di elementi creati tramite ng-repeat. Ho anche il pulsante Elimina. Facendo clic sul pulsante Elimina si rimuove uno per uno l'ultimo elemento dell'array. PlunkerRimuovi primo elemento dell'array (come scoppiare dallo stack)

Ma voglio rimuovere gli elementi uno per uno a partire dal primo elemento. Come lo posso fare? Ho usato questo per rimuovere la lista Articoli:

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

C'è un modo che posso rimuovere dall'alto?

+2

http://stackoverflow.com/questions/2003815/how-to-remove-first-element-of-an-array-in-javascript – user2952238

+0

http://www.w3schools.com/jsref/jsref_shift.asp – skndstry

+1

[Demo] (http://plnkr.co/edit/2oY4akhOThr64f19Yzim?p=preview) –

risposta

66

Il modo più semplice è utilizzare shift(). Se si dispone di un array, la funzione shift sposta tutto a sinistra.

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

Plunker

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

le modifiche apportate a .. ora verrà rimosso dalla cima

+0

Grazie per aver segnalato questo. se il punto di partenza è 0 allora inizia dall'alto – Raihan

+0

@Raihan Benvenuto :) – Kushal

6

Basta usare arr.slice(startingIndex, endingIndex).

Se non si specifica endingIndex, vengono restituiti tutti gli articoli a partire dall'indice fornito.

Nel tuo caso arr=arr.slice(1).

+2

Preferisco questo 'slice()' perché 'slice()' non è invasivo e non modifica il valore stesso a differenza di 'shift()' o 'splice()'. Cfr. var a = [1, 2, 3] var b = a.shift() un // (2) [2, 3] b // 1 – lamusique

Problemi correlati