Ich habe ein Array, das ich in TypeScript erstellt habe, und es hat eine Eigenschaft, die ich als Schlüssel verwende. Wie kann ich einen Artikel entfernen, wenn ich diesen Schlüssel habe?
Ich habe ein Array, das ich in TypeScript erstellt habe, und es hat eine Eigenschaft, die ich als Schlüssel verwende. Wie kann ich einen Artikel entfernen, wenn ich diesen Schlüssel habe?
Antworten:
Genauso wie in JavaScript.
delete myArray[key];
Beachten Sie, dass dies das Element auf setzt undefined
.
Besser die Array.prototype.splice
Funktion nutzen:
const index = myArray.indexOf(key, 0);
if (index > -1) {
myArray.splice(index, 1);
}
indexOf
Rückgabe a number
?
index
an mehr als einer Stelle und eine dieser Stellen ( splice
) möchte eine Nummer sehen, oder Sie erhalten eine Fehlermeldung. Derzeit kann der Compiler nicht verhindern, dass Sie dort Fehler machen.
var index = myArray.findIndex(x => x.prop==key.prop);
.
delete myArr[2]
buchstäblich gelöscht , was sich auch von unterscheidet . Die Moral dieser Geschichte besteht darin, sie nur für diese Aufgabe zu verwenden, da dies ein sicherer Weg ist, um den gewünschten Effekt zu erzielen, ohne die Nebenwirkungen zu verwirren. 2
myArr
myArr[2] = undefined
splice
Wenn Array ein Objekttyp ist, ist dies der einfachste Weg
let foo_object // Item to remove
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object);
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object)[0];
deleteById(id: string) { this.data = this.data.filter(d => d.id !== id); }
Nur ein Wort der Warnung, wenn IDs nicht eindeutig sind, werden Sie alle mit dem gleichen entfernenid
Mit ES6 können Sie diesen Code verwenden:
removeDocument(doc){
this.documents.forEach( (item, index) => {
if(item === doc) this.documents.splice(index,1);
});
}
Es ist meine Lösung dafür:
onDelete(id: number) {
this.service.delete(id).then(() => {
let index = this.documents.findIndex(d => d.id === id); //find index in your array
this.documents.splice(index, 1);//remove element from array
});
event.stopPropagation();
}
Sie können die splice
Methode für ein Array verwenden, um die Elemente zu entfernen.
Wenn Sie beispielsweise ein Array mit dem Namen haben, arr
verwenden Sie Folgendes:
arr.splice(2, 1);
Hier ist also das Element mit Index 2 der Ausgangspunkt und das Argument 2 bestimmt, wie viele Elemente gelöscht werden sollen.
Wenn Sie das letzte Element des genannten Arrays löschen möchten, arr
gehen Sie folgendermaßen vor:
arr.splice(arr.length-1, 1);
Dies gibt arr mit dem zuletzt gelöschten Element zurück.
Beispiel:
var arr = ["orange", "mango", "banana", "sugar", "tea"];
arr.splice(arr.length-1, 1)
console.log(arr); // return ["orange", "mango", "banana", "sugar"]
Abteilungen lassen ist ein Array. Sie möchten ein Element aus diesem Array entfernen.
departments: string[] = [];
removeDepartment(name: string): void {
this.departments = this.departments.filter(item => item != name);
}
Hier ist ein einfacher Einzeiler zum Entfernen eines Objekts nach Eigenschaften aus einem Array von Objekten.
delete this.items[this.items.findIndex(item => item.item_id == item_id)];
oder
this.items = this.items.filter(item => item.item_id !== item.item_id);
Antworten Sie mit dem TypeScript-Spread-Operator (...)
// Your key
const key = 'two';
// Your array
const arr = [
'one',
'two',
'three'
];
// Get either the index or -1
const index = arr.indexOf(key); // returns 0
// Despite a real index, or -1, use spread operator and Array.prototype.slice()
const newArray = (index > -1) ? [
...arr.slice(0, index),
...arr.slice(index + 1)
] : arr;
Eine weitere Lösung mit Typescript:
let updatedArray = [];
for (let el of this.oldArray) {
if (el !== elementToRemove) {
updated.push(el);
}
}
this.oldArray = updated;
Verwenden Sie diese Option, wenn Sie ein bestimmtes Objekt aus einem Array entfernen müssen und Folgendes sicherstellen möchten:
const objWithIdToRemove;
const objIndex = this.objectsArray.findIndex(obj => obj.id === objWithIdToRemove);
if (objIndex > -1) {
this.objectsArray.splice(objIndex, 1);
}
var index: number = myArray.indexOf(key, 0);