J'ai un tableau que j'ai créé en TypeScript et il a une propriété que j'utilise comme clé. Si j'ai cette clé, comment puis-je en supprimer un élément?
J'ai un tableau que j'ai créé en TypeScript et il a une propriété que j'utilise comme clé. Si j'ai cette clé, comment puis-je en supprimer un élément?
Réponses:
De la même manière que vous le feriez en JavaScript.
delete myArray[key];
Notez que cela définit l'élément sur undefined
.
Mieux vaut utiliser la Array.prototype.splice
fonction:
const index = myArray.indexOf(key, 0);
if (index > -1) {
myArray.splice(index, 1);
}
indexOf
retourne un number
?
index
plus d'une fois un lieu et l'un de ces endroits ( splice
) veut voir un nombre ou vous obtiendrez une erreur. Actuellement, le compilateur ne peut pas vous empêcher de faire des erreurs.
var index = myArray.findIndex(x => x.prop==key.prop);
.
delete myArr[2]
supprime littéralement la propriété 2
de myArr
, qui est également différente de myArr[2] = undefined
. La morale de cette histoire est de simplement l'utiliser splice
pour cette tâche, car c'est un moyen sûr d'obtenir l'effet souhaité sans confondre les effets secondaires.
Si tableau est un type d'objets, alors la manière la plus simple est
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); }
Un seul mot d'avertissement, si les ID ne sont pas uniques, vous les supprimerez tous avec le mêmeid
Avec ES6, vous pouvez utiliser ce code:
removeDocument(doc){
this.documents.forEach( (item, index) => {
if(item === doc) this.documents.splice(index,1);
});
}
C'est ma solution pour ça:
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();
}
Vous pouvez utiliser le splice
méthode sur un tableau pour supprimer les éléments.
par exemple, si vous avez un tableau avec le nom, arr
utilisez ce qui suit:
arr.splice(2, 1);
ici, l'élément avec l'index 2 sera le point de départ et l'argument 2 déterminera le nombre d'éléments à supprimer.
Si vous souhaitez supprimer le dernier élément du tableau nommé, arr
procédez comme suit:
arr.splice(arr.length-1, 1);
Cela renverra arr avec le dernier élément supprimé.
Exemple:
var arr = ["orange", "mango", "banana", "sugar", "tea"];
arr.splice(arr.length-1, 1)
console.log(arr); // return ["orange", "mango", "banana", "sugar"]
laisser les ministères est un tableau. Vous souhaitez supprimer un élément de ce tableau.
departments: string[] = [];
removeDepartment(name: string): void {
this.departments = this.departments.filter(item => item != name);
}
Voici un simple liner pour supprimer un objet par propriété d'un tableau d'objets.
delete this.items[this.items.findIndex(item => item.item_id == item_id)];
ou
this.items = this.items.filter(item => item.item_id !== item.item_id);
Répondre à l'aide de l'opérateur d'étalement 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;
Encore une solution en utilisant Typescript:
let updatedArray = [];
for (let el of this.oldArray) {
if (el !== elementToRemove) {
updated.push(el);
}
}
this.oldArray = updated;
Utilisez-le si vous devez supprimer un objet donné d'un tableau et que vous voulez être sûr de ce qui suit:
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);