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
für andere Dinge in meiner Anwendung installiert. Gibt es eine effiziente Möglichkeit, lodash
zu verwenden, um den Eintrag: {"subTopicId":2, "number":32}
aus dem obj
-Objekt zu löschen?
Oder gibt es einen Javascript-Weg, um dies zu tun?
Wie Lyyons in den Kommentaren darauf hingewiesen hat, wäre die Verwendung von _.remove
eine idiotischere und idiotischere Methode, dies zu tun
_.remove(obj.subTopics, {
subTopicId: stToDelete
});
Abgesehen davon können Sie eine Prädikatfunktion übergeben, deren Ergebnis verwendet wird, um zu bestimmen, ob das aktuelle Element entfernt werden muss oder nicht.
_.remove(obj.subTopics, function(currentObject) {
return currentObject.subTopicId === stToDelete;
});
Alternativ können Sie ein neues Array erstellen, indem Sie das alte mit _.filter
filtern und es dem gleichen Objekt wie diesem zuordnen
obj.subTopics = _.filter(obj.subTopics, function(currentObject) {
return currentObject.subTopicId === stToDelete;
});
Oder
obj.subTopics = _.filter(obj.subTopics, {subTopicId: stToDelete});
sie können es mit _pull
machen.
_.pull(obj["subTopics"] , {"subTopicId":2, "number":32});
überprüfen Sie die Referenz
Sie können jetzt _.reject verwenden, um nach dem zu filtern, was Sie loswerden müssen, anstatt nach dem, was Sie behalten müssen.
im Gegensatz zu _.pull
oder _.remove
, die nur für Arrays funktionieren, arbeitet ._reject
für jede Collection
.
obj.subTopics = _.reject(obj.subTopics, (o) => {
return o.number >= 32;
});
Zusätzlich zur @thefourtheye-Antwort verwenden Sie prädikat anstelle herkömmlicher anonymer Funktionen:
_.remove(obj.subTopics, (currentObject) => {
return currentObject.subTopicId === stToDelete;
});
OR
obj.subTopics = _.filter(obj.subTopics, (currentObject) => {
return currentObject.subTopicId === stToDelete;
});
Hier ist die einfache lodash-Funktion mit Array und Löschen mit der Indexnummer.
index_tobe_delete = 1
fruit = [{a: "Apple"}, {b: "banana"}, {c: "choco"}]
_.filter(fruit, (value, key)=> {
return (key !== index_tobe_delete)
})
lodash und TypeScript
let stToDelete = 2;
const clearSubTopics = _.filter(obj.subTopics, topic = (!_.isEqual(topic.subTopicId, stToDelete)));
console.log(clearSubTopics);