Как удалить элемент массива в TypeScript?

У меня есть массив, который я создал в TypeScript, и у него есть свойство, которое я использую в качестве ключа. Если у меня есть этот ключ, как я могу удалить элемент из него?

Ответ 1

Так же, как и в JavaScript.

delete myArray[key];

Обратите внимание, что для этого элемента устанавливается значение undefined.

Лучше использовать функцию Array.prototype.splice :

const index = myArray.indexOf(key, 0);
if (index > -1) {
   myArray.splice(index, 1);
}

Ответ 2

Если массив является типом объектов, то самым простым способом является

let foo_object // Item to remove
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object);

Ответ 3

С ES6 вы можете использовать этот код:

removeDocument(doc){
   this.documents.forEach( (item, index) => {
     if(item === doc) this.documents.splice(index,1);
   });
}

Ответ 4

Это мое решение для этого:

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();
}

Ответ 5

Вы можете использовать метод splice для массива для удаления элементов.

например, если у вас есть массив с именем arr, используйте следующее:

arr.splice(2,1);

так что элемент с индексом 2 будет отправной точкой, а аргумент 2 определит, сколько элементов нужно удалить.

Если вы хотите удалить последний элемент массива с именем arr, сделайте следующее:

arr.splice(arr.length,1);

Это вернет arr с удаленным последним элементом.

Ответ 6

пусть отделы это массив. Вы хотите удалить элемент из этого массива.

departments: string[] = [];

 removeDepartment(name: string): void {
    this.departments = this.departments.filter(item => item != name);
  }

Ответ 7

Ответ с использованием оператора распространения 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;

Ответ 8

Еще одно решение с использованием Typescript:

let updatedArray = [];
for (let el of this.oldArray) {
    if (el !== elementToRemove) {
        updated.push(el);
    }
}
this.oldArray = updated;

Ответ 9

Вот простой вкладыш для удаления объекта по свойству из массива объектов.

delete this.items[this.items.findIndex(item => item.item_id == item_id)];

или

this.items = this.items.filter(item => item.item_id !== item.item_id);