703 votes

Supprimer un objet du tableau en utilisant JavaScript

Comment puis-je supprimer un objet d'un tableau? Par exemple:

 someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];
 

Je souhaite supprimer l'objet qui comprend le nom "Kristian" de someArray .

Je veux réaliser:

 someArray = [{name:"John", lines:"1,19,26,96"}];
 

932voto

KooiInc Points 38845

Ce n'est pas un tableau. C'est un Objet non valide.

Je suppose que vous avez voulu dire:

someArray = [{name:"Kristian", lines:"2,5,10"},
             {name:"John", lines:"1,19,26,96"}];

Vous pouvez utiliser plusieurs méthodes pour supprimer un élément de celui-ci:

//1
someArray.shift(); // first element removed
//2
someArray = someArray.slice(1); // first element removed
//3
someArray.splice(0,1); // first element removed
//4
someArray.pop(); // last element removed

Si vous souhaitez supprimer l'élément à la position x, utilisez:

someArray.splice(x,1);

Répondre au commentaire de @chill182: vous pouvez supprimer un ou plusieurs éléments d'un tableau à l'aide de Array.filter (voir MDN), par exemple

someArray = [{name:"Kristian", lines:"2,5,10"},
             {name:"John", lines:"1,19,26,96"},
             {name:"Brian",lines:"3,9,62,36" }]
johnRemoved = someArray
               .filter(function (el) {
                        return el.name !== "John";
                       });

224voto

Jon Points 194296

La solution propre serait d'utiliser Array.filter:

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 

Le problème, c'est qu'il ne fonctionne pas sur IE < 9. Cependant, vous pouvez inclure du code à partir d'une bibliothèque Javascript (par ex. underscore.js) qui met en œuvre ce pour n'importe quel navigateur.

144voto

psyho Points 4116

Je recommande d'utiliser underscore.js ou sugar.js pour les tâches courantes comme celle-ci:

 // underscore.js
someArray = _.(someArray).reject(function(el) { return el.Name === "Kristian"; });

// sugar.js
someArray.remove(function(el) { return el.Name === "Kristian"; });
 

dans la plupart des projets, il est très utile d'avoir un ensemble de méthodes d'assistance fournies par des bibliothèques comme celles-ci.

95voto

Allan Taylor Points 399
Vraiment ?

76voto

nnnnnn Points 70578

Votre "tableau" comme indiqué n'est pas valide la syntaxe JavaScript. Les accolades {} sont pour les objets de la propriété des paires nom/valeur, mais des crochets [] sont pour les tableaux - comme suit:

someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];

Dans ce cas, vous pouvez utiliser l' .splice() méthode pour supprimer un élément. Pour supprimer le premier élément (indice 0), dire:

someArray.splice(0,1);

// someArray = [{name:"John", lines:"1,19,26,96"}];

Si vous ne connaissez pas l'indice, mais souhaitez parcourir le tableau pour trouver l'article avec le nom "Kristian" retirez-vous pourrait à ceci:

for (var i =0; i < someArray.length; i++)
   if (someArray[i].name === "Kristian") {
      someArray.splice(i,1);
      break;
   }

EDIT: je viens de remarqué que votre question est taggés avec "jQuery", de sorte que vous pouvez essayer de l' $.grep() méthode:

someArray = $.grep(someArray,
                   function(o,i) { return o.name === "Kristian"; },
                   true);

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