remove - splice typescript
¿Cómo elimino un elemento de matriz en TypeScript? (7)
Con ES6 puedes usar este código:
removeDocument(doc){
this.documents.forEach( (item, index) => {
if(item === doc) this.documents.splice(index,1);
});
}
Tengo una matriz que he creado en TypeScript y tiene una propiedad que uso como clave. Si tengo esa clave, ¿cómo puedo eliminar un elemento de ella?
De la misma manera que lo harías en JavaScript.
delete myArray[key];
Tenga en cuenta que esto establece el elemento en undefined
.
Mejor usar la función Array.prototype.splice
:
const index = myArray.indexOf(key, 0);
if (index > -1) {
myArray.splice(index, 1);
}
Es mi solución para eso:
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();
}
Puede utilizar el método de splice
en una matriz para eliminar los elementos.
por ejemplo, si tiene una matriz con el nombre arr
use lo siguiente:
arr.splice(2,1);
así que aquí el elemento con el índice 2 será el punto de partida y el argumento 2 determinará cuántos elementos se eliminarán.
Si desea eliminar el último elemento de la matriz llamada arr
, haga esto:
arr.splice(arr.length,1);
Esto devolverá arr con el último elemento eliminado.
Si la matriz es el tipo de objetos, entonces la forma más sencilla es
let foo_object // Item to remove
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object);
Una solución más utilizando Typescript:
let updatedArray = [];
for (let el of this.oldArray) {
if (el !== elementToRemove) {
updated.push(el);
}
}
this.oldArray = updated;
Respuesta utilizando el operador de propagación de 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;