2010-01-05 9 views
299
var arr = [1,2,3,5,6]; 

Je veux retirer le 1er élément du tableau pour qu'il devienne:Comment supprimer un élément d'un tableau en JavaScript?

var arr = [2,3,5,6]; 

Pour étendre cette question, si je veux supprimer le 2ème élément du tableau pour qu'il devienne:

var arr = [1,3,5,6]; 
+1

'tranche (démarrage, fin) 'not _'how_many_to_remove'_ – seanjacob

+2

@Ped arr.unshift() ne supprime pas, mais" Ajoute un ou plusieurs éléments au début d'un tableau " –

+0

@seanjacob c'est" splice "pas" tranche "je suppose. –

Répondre

304

Pour une solution plus flexible, utilisez la fonction splice(). Il vous permet de supprimer un élément dans un tableau en fonction de l'indice Valeur:

var indexToRemove = 0; 
var numberToRemove = 1; 

arr.splice(indexToRemove, numberToRemove); 
+12

Et la question suivante: 'arr.splice (1,1)' pour le second élément. – slebetman

+1

Je préfère 'splice()' sur 'shift()' parce que c'est plus flexible. Je peux vouloir faire quelque chose de différent dans le futur, et pas toujours je veux enlever seulement un élément, ou même le premier élément. –

+11

Si vous venez ici de Google: Gabriel préfère cette réponse, mais vous devez savoir qu'il y a aussi shift(), voir la réponse de Joseph. – SHernandez

8

Peut-être quelque chose comme ceci:

arr=arr.slice(1); 
637

shift() est idéal pour votre situation. shift() supprime le premier élément d'un tableau et renvoie cet élément. Cette méthode modifie la longueur du tableau.

array = [1, 2, 3, 4, 5]; 

array.shift(); // 1 

array // [2, 3, 4, 5] 
+0

Cela fonctionne, mais ne supprimera que le premier élément du tableau. –

+51

@Gabriel: n'était pas exactement la question? Je préfère 'shift()' à 'splice (..., ...)' car c'est beaucoup plus explicite, direct. –

+12

Cela répond à la question énoncée dans le titre, qui est la réponse que la plupart des personnes qui trouvent cette question dans une recherche seront à la recherche. –

12

Rédiger un petit article sur l'insertion et la suppression d'éléments à des positions arbitraires dans les tableaux Javascript.

Voici le petit extrait pour retirer un élément de n'importe quelle position. Cela étend la classe Array en Javascript et ajoute la méthode remove (index).

// Remove element at the given index 
Array.prototype.remove = function(index) { 
    this.splice(index, 1); 
} 

Donc, pour supprimer le premier élément dans votre exemple, composez le arr.remove():

var arr = [1,2,3,5,6]; 
arr.remove(0); 

Pour enlever le deuxième élément,

arr.remove(1); 

Voici un petit article avec insert et supprimer des méthodes pour la classe Array. En gros, ce n'est pas différent des autres réponses utilisant splice, mais le nom splice n'est pas intuitif, et si vous avez cet appel partout dans votre application, cela rend le code plus difficile à lire.

+2

l'article url ne fonctionne pas – MikeMurko

30
arr.slice(begin[,end]) 

est non destructive, épissure et le décalage modifient le tableau d'origine

+1

Oui pour ne pas muter. Cela devrait être plus visible. – user

51

Le procédé Array.prototype.shift supprime le premier élément d'un tableau, et le renvoie. Il modifie le tableau d'origine.

var a = [1,2,3] 
// [1,2,3] 
a.shift() 
// 1 
a 
//[2,3] 
+4

Une grande amélioration par rapport à la réponse de Joseph Silvashy - aucune incohérence entre la description et le code. – mklement0

-1

Array.splice() a la propriété intéressante que l'on ne peut pas l'utiliser pour supprimer le premier élément. Donc, nous devons recourir à

function removeAnElement(array, index) { 
    index--; 

    if (index === -1) { 
     return array.shift(); 
    } else { 
     return array.splice(index, 1); 
    } 
} 
+1

Array.splice (0,1) supprime le premier élément. Selon toutes les autres réponses ici, et selon https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice. En outre, pourquoi quelqu'un passerait -1 pour supprimer le premier élément? Ne passeraient-ils pas 0? – stone

+0

@skypecakes Je ne peux pas parler de la validité de splice sur le 0e index, mais ici l'index est décrémenté avant ce contrôle, donc il aurait été 0 lorsqu'il est passé. –

1

Si vous souhaitez supprimer un ou plusieurs éléments d'un tableau dépend son contenu et/ou sa position.

Vous pouvez utiliser la fonction de tableau js filter.

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filter.

Retirer le premier élément:

// Not very useful but it works 
function removeFirst(element, index) { 
    return index > 0; 
} 
var arr = [1,2,3,5,6].filter(removeFirst); // [2,3,4,5,6] 

Supprimer deuxième élément:

function removeSecond(element, index) { 
    return index != 1; 
} 
var arr = [1,2,3,5,6].filter(removeSecond); // [1,3,4,5,6] 

Annuler élément impair:

function removeOdd(element, index) { 
    return !(element % 2); 
} 
var arr = [1,2,3,5,6].filter(removeOdd); [2,4,6] 
Questions connexes