Comment supprimer un objet d'un tableau? Je souhaite supprimer l'objet contenant le nom Kristian
de someArray
. Par exemple:
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
Je veux réaliser:
someArray = [{name:"John", lines:"1,19,26,96"}];
javascript
arrays
Clem
la source
la source
Réponses:
Vous pouvez utiliser plusieurs méthodes pour supprimer des éléments d'un tableau:
Si vous souhaitez supprimer l'élément à la position
x
, utilisez:Ou
Répondre au commentaire de @ chill182 : vous pouvez supprimer un ou plusieurs éléments d'un tableau en utilisant
Array.filter
, ouArray.splice
combiné avecArray.findIndex
(voir MDN ), par exemplela source
findIndex
résultat avant de l'utilisersplice
. S'il n'y a aucun élément dans le tableau qui correspond à la conditionfindIndex
sera renvoyé-1
et le mettre directement danssplice
entraînera une suppression arbitraire du dernier élément du tableau.Je recommande d'utiliser lodash.js ou sugar.js pour des tâches courantes comme celle-ci:
dans la plupart des projets, disposer d'un ensemble de méthodes d'assistance fournies par des bibliothèques comme celles-ci est très utile.
la source
someArray = _.reject(someArray, function(el) { return el.Name === "Kristian"; });
someArray = someArray.filter(function(e) { return e.Name !== "Kristian"; });
La solution propre serait d'utiliser
Array.filter
:Le problème avec cela est qu'il ne fonctionne pas sur IE <9. Cependant, vous pouvez inclure du code provenant d'une bibliothèque Javascript (par exemple underscore.js ) qui l'implémente pour n'importe quel navigateur.
la source
someArray = someArray.filter(function(el) { return el.Name != "Kristian"; });
remédier, non?Que dis-tu de ça?
la source
$.each()
met en cache la longueur du tableau avant de boucler, donc si vous supprimez un élément,$.each()
il dépassera la fin du tableau (désormais plus court). (Alors, cesomeArray[i]
seraundefined
etundefined.name
va planter.)Votre "tableau" comme indiqué est une syntaxe JavaScript non valide. Les crochets
{}
sont pour les objets avec des paires nom / valeur de propriété, mais les crochets[]
sont pour les tableaux - comme ceci:Dans ce cas, vous pouvez utiliser la
.splice()
méthode pour supprimer un élément. Pour supprimer le premier élément (index 0), dites:Si vous ne connaissez pas l'index mais que vous souhaitez rechercher dans le tableau pour trouver l'élément avec le nom "Kristian" à supprimer, vous pouvez:
EDIT: Je viens de remarquer que votre question est taguée avec "jQuery", vous pouvez donc essayer la
$.grep()
méthode :la source
$.grep()
? Cela n'ajoute pas grand-chose dans cet exemple, où oui, j'aurais pu le mettre!=
, mais dans d'autres cas, vous pourriez déjà avoir une fonction définie qui arrive à faire le test opposé à ce que vous voulez grep, alors plutôt que de définir un fonction supplémentaire, vous pouvez simplement utiliser cette surcharge pour inverser les résultats.function isEven(num) { return num%2===0 }
. Vous pouvez utiliser$.grep(someArray, isEven)
pour obtenir uniquement les nombres pairs du tableau, ou$.grep(someArray, isEven, true)
pour faire le contraire et obtenir les valeurs non paires.ES2015
Cela supprimera John !
la source
Vous pouvez utiliser array.filter ().
par exemple
Fonctions fléchées:
la source
J'ai créé une fonction dynamique qui prend les objets Array, Key et value et retourne le même tableau après avoir supprimé l'objet souhaité:
Exemple complet: DEMO
la source
C'est une fonction qui fonctionne pour moi:
la source
Vous pouvez également essayer de faire quelque chose comme ceci:
la source
la source
Utilisez la fonction d'épissage sur les tableaux. Spécifiez la position de l'élément de départ et la longueur de la sous-séquence que vous souhaitez supprimer.
la source
Votez pour l' UndercoreJS pour un travail simple avec des tableaux.
La fonction _ .without () permet de supprimer un élément:
la source
Avec fonction flèche ES 6
la source
La solution la plus simple serait de créer une carte qui stocke les index de chaque objet par nom, comme ceci:
la source
Bien que ce ne soit probablement pas approprié pour cette situation, j'ai découvert l'autre jour que vous pouvez également utiliser le
delete
mot clé pour supprimer un élément d'un tableau si vous n'avez pas besoin de modifier la taille du tableau, par exemple.la source
Cette réponse
ne fonctionne pas pour plusieurs enregistrements remplissant la condition. Si vous disposez de deux enregistrements consécutifs, seul le premier est supprimé et l'autre ignoré. Vous devez utiliser:
au lieu .
la source
Il semble y avoir une erreur dans la syntaxe de votre tableau, donc en supposant que vous voulez dire un tableau par opposition à un objet, Array.splice est votre ami ici:
la source
Vous pouvez également utiliser la fonction de carte .
la source
Vous pouvez également utiliser
some
:la source
C'est ce que j'utilise.
C'est aussi simple que de dire
Remplacez n'importe quel nombre au lieu de trois. Après la sortie attendue devrait être:
la source
Si vous souhaitez supprimer toutes les occurrences d'un objet donné (en fonction d'une condition), utilisez la méthode d'épissage javascript dans un pour la boucle.
Étant donné que la suppression d'un objet affecterait la longueur du tableau, assurez-vous de décrémenter le compteur d'une étape, afin que la vérification de la longueur reste intacte.
L'extrait de code ci-dessus supprime tous les objets dont l'âge est supérieur à 20 ans.
la source
Utilisez la fonction splice () de javascript.
Cela peut aider: http://www.w3schools.com/jsref/jsref_splice.asp
la source
splice (i, 1) où i est l'index incrémentiel du tableau supprimera l'objet. Mais rappelez-vous que l'épissure réinitialisera également la longueur du tableau, alors faites attention à «non défini». En utilisant votre exemple, si vous supprimez «Kristian», lors de la prochaine exécution dans la boucle, je serai 2 mais someArray aura une longueur de 1, donc si vous essayez de supprimer «John», vous obtiendrez une erreur «non définie» . Une solution à ce problème, quoique peu élégante, consiste à disposer d'un compteur séparé pour suivre l'index de l'élément à supprimer.
la source
Renvoie uniquement les objets du tableau dont la propriété
name
n'est pas "Kristian"Démo:
la source
This Concepts using Kendo Grid
la source
Je suppose que les réponses sont très ramifiées et nouées.
Vous pouvez utiliser le chemin suivant pour supprimer un objet tableau qui correspond à l'objet donné dans le jargon JavaScript moderne.
la source
Si vous voulez accéder et supprimer un objet d'un tableau, vous pouvez simplement essayer quelque chose comme ça.
la source