Ich habe ein Objekt, das so aussieht:
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;
Ich habe lodash
in meiner Anwendung für andere Dinge installiert. Gibt es eine effiziente Möglichkeit, lodash
den Eintrag zu löschen: {"subTopicId":2, "number":32}
aus dem obj
Objekt?
Oder gibt es eine Javascript-Möglichkeit, dies zu tun?
javascript
arrays
object
lodash
Samantha JT Star
quelle
quelle
splice
( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) verwenden, um ein Element aus einer Liste zu entfernenresult = _.pull(arr, value)
Dies würde alle übereinstimmenden Werte aus der Liste entfernen.Antworten:
Wie lyyons in den Kommentaren darauf hingewiesen, mehr idiomatische und lodashy Weg , dies zu tun zu verwenden , wäre
_.remove
wie diese,Außerdem können Sie eine Prädikatfunktion übergeben, deren Ergebnis verwendet wird, um zu bestimmen, ob das aktuelle Element entfernt werden muss oder nicht.
Alternativ können Sie ein neues Array erstellen, indem Sie das alte mit filtern
_.filter
und es wie folgt demselben Objekt zuweisenOder
quelle
_.filter
Version aktualisiert ._.filter
ein Element zurück, wenn das Prädikat wahr ist. Ihre Implementierung wird alle unerwünschten Elemente anstelle der Elemente zurückgeben, die Sie behalten möchten_.reject
anstatt_.filter
das gleiche Prädikat zu verwenden. Überprüfen Sie meine Antwort für weitere Details!Verwenden Sie einfach Vanille JS. Sie können
splice
das Element verwenden , um Folgendes zu entfernen:Demo
quelle
Is there an efficient way to use _lodash to delete
du kannst es mit machen
_pull
.Überprüfen Sie die Referenz
quelle
_.pull
Verwendet gemäß den Dokumenten strikte Gleichheit für Vergleiche, dh === . Zwei verschiedene einfache Objekte werden niemals als gleich===
(oder auch nicht) verglichen==
. Daher entfernt Ihr Code oben niemals Elemente aus dem Array._.remove
Leert einfach das Array.Sie können jetzt _.reject verwenden , mit dem Sie nach dem filtern können, was Sie entfernen müssen, anstatt nach dem, was Sie behalten müssen.
im Gegensatz zu
_.pull
oder_.remove
dass nur auf Arrays arbeiten,._reject
funktioniert auf jedemCollection
quelle
Wie ich weiß, gibt es vier Möglichkeiten, dies zu tun
Der Erste:
Der zweite ist:
Auf diese Weise wird das Array mutiert.
Der dritte ist:
Der letzte ist:
Ich lerne
lodash
Antworte, um eine Aufzeichnung zu machen, damit ich sie später finden kann.
quelle
reject
Zusätzlich zur @ thefourtheye-Antwort wird Prädikat anstelle traditioneller anonymer Funktionen verwendet:
ODER
quelle
lodash und maschinenschrift
quelle
Hier ist die einfache lodash-Funktion mit Array und Löschen mit der Indexnummer.
quelle