Как удалить элемент массива в TypeScript?
У меня есть массив, который я создал в TypeScript, и в нем есть свойство, которое я использую в качестве ключа. Если у меня есть этот ключ, как можно удалить элемент из массива?
5 ответ(ов)
В вашем коде есть ошибка синтаксиса в стрелочной функции. Правильный способ написания фильтрации массива с использованием стрелочной функции выглядит так:
let foo_object; // Itemitem(object here) to remove
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object);
Здесь мы используем стрелочную функцию, которая принимает объект obj и возвращает true, если obj не равен foo_object. Таким образом, filter создает новый массив, в котором будут только те объекты, которые не равны foo_object.
В ES6 вы можете использовать следующий код для удаления документа:
removeDocument(doc) {
this.documents.forEach((item, index) => {
if (item === doc) this.documents.splice(index, 1);
});
}
Этот метод removeDocument проходит по массиву this.documents и проверяет, совпадает ли текущий элемент с переданным документом doc. Если совпадение найдено, элемент удаляется из массива с помощью метода splice. Однако обратите внимание, что использование splice внутри цикла forEach может привести к пропуску элементов, так как индексы массива изменяются при каждом удалении. Лучше использовать другой подход, например, метод filter:
removeDocument(doc) {
this.documents = this.documents.filter(item => item !== doc);
}
Этот вариант создаст новый массив, исключая документ, который вы хотите удалить, и избавит от возможных проблем с изменением индексов во время перебора.
Вот моё решение для этой задачи:
onDelete(id: number) {
this.service.delete(id).then(() => {
let index = this.documents.findIndex(d => d.id === id); // находим индекс элемента в массиве
this.documents.splice(index, 1); // удаляем элемент из массива
});
event.stopPropagation();
}
Этот код удаляет элемент с заданным id из вашего массива documents. Сначала мы вызываем метод delete у сервиса, который выполняет удаление на сервере. После успешного завершения удаления мы находим индекс элемента в массиве и используем метод splice, чтобы удалить его. Также важно отметить, что мы предотвращаем дальнейшую обработку события с помощью event.stopPropagation().
Чтобы удалить элемент из массива departments, вы можете использовать метод filter, который создаёт новый массив, содержащий только те элементы, которые проходят проверку, заданную в функции. В вашем случае вы можете отфильтровать массив, исключив элемент с заданным именем. Вот как это выглядит на TypeScript:
departments: string[] = [];
removeDepartment(name: string): void {
this.departments = this.departments.filter(item => item !== name);
}
В этом коде метод removeDepartment принимает строку name и обновляет массив departments, исключая элемент, равный name. Таким образом, если в массиве есть совпадение с переданным именем, оно будет удалено, и массив будет обновлён.
Вы можете использовать метод splice для удаления элементов из массива.
Например, если у вас есть массив с именем arr, вы можете использовать следующий код:
arr.splice(2, 1);
Здесь элемент с индексом 2 будет начальной точкой, а второй аргумент (2) определяет, сколько элементов следует удалить.
Если вы хотите удалить последний элемент массива arr, сделайте это следующим образом:
arr.splice(arr.length - 1, 1);
Это вернет массив arr с удаленным последним элементом.
Пример:
var arr = ["orange", "mango", "banana", "sugar", "tea"];
arr.splice(arr.length - 1, 1);
console.log(arr); // вернет ["orange", "mango", "banana", "sugar"]
Преобразование 'ArrayList<String>' в 'String[]' в Java
Как преобразовать массив в множество в Java
Как преобразовать int[] в List<Integer> в Java?
Как проверить, содержит ли массив строку в TypeScript?
Типизация массива пар ключ-значение в TypeScript