438 votes

Comment supprimer une valeur spécifique d'un tableau à l'aide de jQuery ?

J'ai un tableau qui ressemble à ceci : var y = [1, 2, 3];

Je voudrais supprimer 2 à partir d'un tableau y .

Comment supprimer une valeur particulière d'un tableau à l'aide de jQuery ? J'ai essayé pop() mais cela supprime toujours le dernier élément.

8 votes

AVERTISSEMENT : certaines des réponses les plus votées peuvent avoir des effets secondaires, par exemple, effectuer de mauvaises opérations lorsque le tableau ne contient pas l'élément à supprimer. Veuillez les utiliser avec précaution .

0 votes

Cette réponse a fonctionné pour moi, avec un simple javascript : stackoverflow.com/a/5767357/4681687

0 votes

Voir mon commentaire sous l'utilisation de splice() et $.inArray(), j'ai résolu ce problème SANS l'utilisation d'une boucle, et c'est propre.

644voto

Sarfraz Points 168484

Un travail JSFIDDLE

Vous pouvez faire quelque chose comme ça :

var y = [1, 2, 2, 3, 2]
var removeItem = 2;

y = jQuery.grep(y, function(value) {
  return value != removeItem;
});

Résultat :

[1, 3]

http://snipplr.com/view/14381/remove-item-from-array-with-jquery/

0 votes

Merci Sarfraz, même réponse que celle que j'ai obtenue de snipplr.com/view/14381/remove-item-from-array-with-jquery Cela fonctionne maintenant ! Merci.

2 votes

C'est une bonne nouvelle et oui, la bonne modification était nécessaire :)

0 votes

@tftd supprimer le deuxième ")" dans "function(value))". Méthode géniale, qui fonctionne parfaitement. Merci Sarfraz !

380voto

user113716 Points 143363

Avec jQuery, vous pouvez effectuer une opération d'une seule ligne comme ceci :

Ejemplo: http://jsfiddle.net/HWKQY/

y.splice( $.inArray(removeItem, y), 1 );

Utilise l'interface native .splice() et de jQuery $.inArray() .

13 votes

@Elankeeran - De rien. :o) Je dois noter que cela ne supprimera que la première instance. S'il y en a plusieurs à supprimer, cela ne fonctionnera pas.

8 votes

J'ai également changé la valeur de removeItem en une valeur qui n'existe PAS dans le tableau et cela a supprimé le dernier élément du tableau. Utilisez ceci si vous n'êtes pas certain de l'existence du removeItem : y = $.grep(y, function (val) { return val != removeItem ; }) ;

0 votes

Il est également bon de noter que si vous connaissez l'index de l'élément, vous pouvez le supprimer en utilisant simplement la fonction .splice(1, 1) où la première expression est l'indice et la seconde est le nombre de suppressions à cet indice. Ainsi, pour supprimer 2, vous devez savoir qu'il se trouve à l'indice 1. y.splice( 1 ,1 ); msdn.microsoft.com/en-us/library/wctc5k7s%28v=VS.94%29.aspx

36voto

Aamir Afridi Points 3865

Pas une méthode jQuery mais... Pourquoi ne pas utiliser une méthode plus simple. Supprimez 'c' du tableau suivant

var a = ['a','b','c','d']
a.splice(a.indexOf('c'),1);
>["c"]
a
["a", "b", "d"]

Vous pouvez également utiliser : (Note à moi-même : Ne modifiez pas les objets qui ne vous appartiennent pas. )

Array.prototype.remove = function(v) { this.splice(this.indexOf(v) == -1 ? this.length : this.indexOf(v), 1); }
var a = ['a','b','c'];
a.remove('c'); //value of "a" is now ['a','b']

L'ajout est plus simple a.push('c')

10 votes

Ne fonctionne pas. Supprime le dernier élément du tableau s'il n'est pas trouvé.

7 votes

IndexOf n'est pas supporté dans IE8-.

35voto

vatsal Points 610

Vous pouvez utiliser underscore.js . Cela rend les choses vraiment simples.

Dans votre cas, tout le code que vous aurez à écrire est -

_.without([1,2,3], 2);

et le résultat sera [1,3].

Il réduit le code que vous écrivez.

0 votes

Imho _.without(2, [1,2,3]); serait un meilleur design. Maintenant ça ressemble plus à yodascore.js

16voto

yesnik Points 247
//This prototype function allows you to remove even array from array
Array.prototype.remove = function(x) { 
    var i;
    for(i in this){
        if(this[i].toString() == x.toString()){
            this.splice(i,1)
        }
    }
}

Exemple d'utilisation

var arr = [1,2,[1,1], 'abc'];
arr.remove([1,1]);
console.log(arr) //[1, 2, 'abc']

var arr = [1,2,[1,1], 'abc'];
arr.remove(1);
console.log(arr) //[2, [1,1], 'abc']

var arr = [1,2,[1,1], 'abc'];
arr.remove('abc');
console.log(arr) //[1, 2, [1,1]]

Pour utiliser cette fonction prototype, vous devez la coller dans votre code. Vous pouvez ensuite l'appliquer à n'importe quel tableau avec la "notation par points" :

someArr.remove('elem1')

0 votes

Un peu plus d'explication ne serait pas de trop ici !

0 votes

Pour utiliser cette fonction prototype, vous devez la coller dans votre code. Vous pouvez ensuite l'appliquer à n'importe quel tableau avec la "notation par points", par exemple : someArr.remove('elem1')

3 votes

Le seul problème est que cela écrase la méthode de suppression de l'objet global Array, ce qui signifie que tout autre code du projet qui dépend du comportement par défaut se retrouve avec un comportement bogué.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X