#javascript #angular #typescript
Вопрос:
Я пытаюсь удалить элемент из своего массива, в котором значение равно 0. Я новичок и не знаю, как это сделать.
приложение.компонент.ts:
delete(){
const filter: number = this.DB[this.number= 0]
this.DB.splice(filter, 1)
}
app.component.html:
<button (click)="delete()" class="btn btn-primary">delete num = 0</button>
Комментарии:
1. Я бы изменил имя на deleteNum или что-то не зарезервированное
2. В чем проблема с кодом?
3. @mplungjan Это имеет смысл, но в этом нет необходимости. Вы можете использовать зарезервированные имена, такие как
new
иdelete
для методов класса, и использовать их в шаблоне. Эти два названия методов даже очень распространены.4. HTML: <кнопка (щелчок)=»Удалить номер(‘num==0’)» класс=»btn btn-основной»>удалить номер = 0<кнопка (щелчок)=»Удалить номер(‘num==0’)» класс=»btn btn-основной»></кнопка> TS: Удалить номер(условие строки){ если(условие == ‘num==0’){ это. DB = этот.DB.фильтр(num -> num==0); } }
5. Для меня неясно, какой элемент вы хотите удалить. Вы хотите удалить элемент в позиции 0
this.number
(который находится0
послеthis.number = 0
) илиfilter
(который является элементом в позиции 0).this.DB.splice(filter, 1)
это то жеthis.DB.splice(this.DB[0], 1)
самое, что . Еслиthis.DB[0]
это число< this.DB.length
, функция уже удаляет элемент. Вы хотите удалить один элемент или все элементы, соответствующие какому-либо условию?
Ответ №1:
delete(){
this.DB = this.DB.filter(item => item !== 0);
}
Комментарии:
1. Я думаю, что это
this.DB.filter(item => item.number !== 0)
илиthis.DB.splice(this.DB.indexOf(item => item.number === 0), 1)
2. спасибо за ваш ответ, это было полезно для меня, извините, если я плохо сформулировал это.
Ответ №2:
Насколько я понимаю из вашего кода, ничего не происходит, связанного с удалением элемента, равного 0. Когда я печатал это, @dmance ответил прямо передо мной. Если вы хотите отфильтровать некоторые элементы из массива, вы используете метод фильтрации для массива. Вам не нужно создавать свой собственный метод фильтрации.
this.DB.filter(item=> item !==0)
эта часть кода берет элементы, которые передают только условие, указанное в скобках, и собирает эти элементы в массив. Таким образом, ваш новый массив становится массивом с элементами, которые нужны только вам. Для этого вы назначаете свое это.БД в приведенную выше строку, затем ваше это.Массив БД будет назначен новому массиву, который не включает элемент, который вы хотели удалить.
Комментарии:
1. спасибо, я попробую это сделать в своем коде. извините за плохую формулировку моего вопроса