Mam tablicę, którą utworzyłem w TypeScript i ma właściwość, której używam jako klucza. Jeśli mam ten klucz, jak mogę usunąć z niego przedmiot?
Mam tablicę, którą utworzyłem w TypeScript i ma właściwość, której używam jako klucza. Jeśli mam ten klucz, jak mogę usunąć z niego przedmiot?
Odpowiedzi:
Tak samo jak w JavaScript.
delete myArray[key];
Zauważ, że ustawia to element na undefined
.
Lepiej użyć Array.prototype.splice
funkcji:
const index = myArray.indexOf(key, 0);
if (index > -1) {
myArray.splice(index, 1);
}
indexOf
zwrot a number
?
index
w więcej niż jednym miejscu i jedno z tych miejsc ( splice
) chce zobaczyć numer lub otrzymasz błąd. Obecnie kompilator nie może zapobiec popełnieniu błędów.
var index = myArray.findIndex(x => x.prop==key.prop);
.
delete myArr[2]
dosłownie usuwa właściwość 2
o myArr
, która jest inna niż myArr[2] = undefined
. Morałem tej historii jest po prostu wykorzystanie splice
do tego zadania, ponieważ jest to bezpieczny sposób na uzyskanie pożądanego efektu bez mylących skutków ubocznych.
Jeśli tablica jest typem obiektów, to najprostszym sposobem jest
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); }
Jedno słowo ostrzeżenia, jeśli identyfikatory nie są unikalne, usuniesz wszystkie z tym samymid
W ES6 możesz użyć tego kodu:
removeDocument(doc){
this.documents.forEach( (item, index) => {
if(item === doc) this.documents.splice(index,1);
});
}
Oto moje rozwiązanie:
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();
}
Możesz użyć splice
metody z tablicy, aby usunąć elementy.
na przykład, jeśli masz tablicę z nazwą, arr
użyj następującego polecenia:
arr.splice(2, 1);
więc tutaj element z indeksem 2 będzie punktem początkowym, a argument 2 określi, ile elementów należy usunąć.
Jeśli chcesz usunąć ostatni nazwany element tablicy, arr
wykonaj następujące czynności:
arr.splice(arr.length-1, 1);
Zwróci to arr z ostatnim elementem usuniętym.
Przykład:
var arr = ["orange", "mango", "banana", "sugar", "tea"];
arr.splice(arr.length-1, 1)
console.log(arr); // return ["orange", "mango", "banana", "sugar"]
niech departamenty to tablica. Chcesz usunąć element z tej tablicy.
departments: string[] = [];
removeDepartment(name: string): void {
this.departments = this.departments.filter(item => item != name);
}
Oto prosty jeden linijka do usuwania obiektu według właściwości z tablicy obiektów.
delete this.items[this.items.findIndex(item => item.item_id == item_id)];
lub
this.items = this.items.filter(item => item.item_id !== item.item_id);
Odpowiedz za pomocą operatora rozprzestrzeniania TypeScript (...)
// 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;
Jeszcze jedno rozwiązanie za pomocą Typescript:
let updatedArray = [];
for (let el of this.oldArray) {
if (el !== elementToRemove) {
updated.push(el);
}
}
this.oldArray = updated;
Użyj tego, jeśli chcesz usunąć dany obiekt z tablicy i chcesz mieć pewność, że:
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);