как я могу удалить элемент из массива, если выполнены определенные условия. использование углового/машинописного текста

#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. спасибо, я попробую это сделать в своем коде. извините за плохую формулировку моего вопроса