J'ai un objet qui ressemble à ceci:
var obj = {
"objectiveDetailId": 285,
"objectiveId": 29,
"number": 1,
"text": "x",
"subTopics": [{
"subTopicId": 1,
"number": 1
}, {
"subTopicId": 2,
"number": 32
}, {
"subTopicId": 3,
"number": 22
}]
}
var stToDelete = 2;
J'ai lodash
installé dans mon application pour d'autres choses. Existe-t-il un moyen efficace lodash
de supprimer l'entrée: {"subTopicId":2, "number":32}
de l' obj
objet?
Ou existe-t-il un moyen javascript de le faire?
javascript
arrays
object
lodash
Samantha JT Star
la source
la source
splice
( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) pour supprimer un élément d'une listeresult = _.pull(arr, value)
Cela supprimera toutes les valeurs correspondantes de la liste.Réponses:
Comme Lyyons l'a souligné dans les commentaires, une manière plus idiomatique et lodash de le faire serait d'utiliser
_.remove
, comme ceciEn dehors de cela, vous pouvez passer une fonction de prédicat dont le résultat sera utilisé pour déterminer si l'élément actuel doit être supprimé ou non.
Vous pouvez également créer un nouveau tableau en filtrant l'ancien avec
_.filter
et en l'affectant au même objet, comme ceciOu
la source
_.filter
version._.filter
renvoie un élément si le prédicat est vrai. Votre implémentation renverra tous les éléments indésirables au lieu de ceux que vous souhaitez conserver_.reject
au lieu de_.filter
pour utiliser le même prédicat. Vérifiez ma réponse pour plus de détails!Utilisez simplement la vanille JS. Vous pouvez utiliser
splice
pour supprimer l'élément:Démo
la source
Is there an efficient way to use _lodash to delete
vous pouvez le faire avec
_pull
.vérifier la référence
la source
_.pull
utilise une égalité stricte pour les comparaisons, c'est-à-dire === . Deux objets simples différents ne seront jamais comparés comme égaux par===
(ou par==
d'ailleurs). Ainsi, votre code ci-dessus ne supprimera jamais aucun élément du tableau._.remove
purge juste le tableau.Vous pouvez maintenant utiliser _.reject qui vous permet de filtrer en fonction de ce dont vous devez vous débarrasser, au lieu de ce que vous devez conserver.
contrairement
_.pull
ou_.remove
qui ne fonctionnent que sur les tableaux,._reject
travaille sur toutCollection
la source
Il y a quatre façons de faire cela comme je le sais
La première:
Le second est:
De cette façon, le tableau sera muté.
Le troisième est:
Le dernier est:
j'apprends
lodash
Répondez pour faire un enregistrement, afin que je puisse le retrouver plus tard.
la source
reject
En plus de la réponse @thefourtheye, en utilisant un prédicat au lieu des fonctions anonymes traditionnelles:
OU
la source
lodash et dactylographié
la source
Voici la fonction lodash simple avec tableau et la suppression avec le numéro d'index.
la source