#javascript #angular #typescript
Вопрос:
Попытался удалить элемент из массива, но он удаляет последний индекс этого массива, а не соответствующий, ниже приведен мой код. Пример: если я удаляю первый элемент из списка, то это удаление последнего элемента из списка.
код компонента.ts
this.items.splice(this.items.indexOf(id));
html-код
<span class="close" style="cursor: pointer;" (click)="removeItems(item.Id)">
<i class="far fa-trash-alt fa-2x" style="color: red;"></i>
</span>
Я использую цикл *ngFor для получения своих товаров. Я не помещал этот код сюда.
Ответ №1:
- Если вы передадите отрицательное значение
splice
функции, она удалит элемент(ы) из конца. - Вам нужно передать количество предметов, которые нужно удалить. Итак, вы ищете это :
this.items.splice(this.items.indexOf(id), 1);
Комментарии:
1. Хороший улов. Я некоторое время смотрел на это, пока не понял, что количество предметов не передается в качестве аргумента.
Ответ №2:
Если элементы представляют собой коллекцию объектов, то использование indexOf только с идентификатором, скорее всего, будет возвращать -1 каждый раз, что объясняет, почему удаляется последний элемент.
Вам, вероятно, понадобится что-то вроде
const itemToRemove = this.items.findIndex(i => i.id === id);
if(itemToRemove >= 0) {
this.items.splice(itemToRemove, 1);
}