У меня есть массив arr=[{key: 'first'},{key: 'second'} ...]
, я хочу пройти через этот массив и проверить, существует ли элемент с определенным ключом и что-то сделать.
arr.forEach(element => {
if(element.key === 'first') {
// do something
} else {
// do something else
}
if(element.key === 'second') {
// do something
} else {
// do something else
}
});
Дело в том, что когда он проходит через массивсначала он видит 'first'
и проходит через оператор if()
, но он также проходит через оператор else()
элемента 'second'
, потому что не нашел его, и так же происходит, когда foreach
проходит через другие элементыв массиве.Я не знаю, как заставить его пройти массив один раз и установить if() else()
соответствующим образом.Поэтому, когда он находит 'first'
, я хочу, чтобы он просто сделал if()
этого элемента, а не else()
других.Я надеюсь, вы понимаете.Заранее спасибо!
Редактировать: Моя логика в этом коде заключается в том, что когда я вызываю базу данных и нахожу этот массив, если в этом массиве нет 'firstExercise'
, он должен добавить его в эту базу данных (я используюfirebase, поэтому в else()
я вызываю db для создания этого упражнения), и если в массиве есть 'firstExercise'
, ничего не делайте.Извините, что не разъяснил это.
Edit2: Вот мой оригинальный код:
res.forEach(element => {
if (this.numbOfFinished === 1) {
if (element.key === 'firstExercise') {
console.log('has')
} else {
awardName = 'firstExercise'
this.homeService.addAward(this.userId, awardName).then(() => {
this.awardName = 'firstExercise';
this.awarded = true;
});
}
}
});
if (this.numbOfFinished === 5) {
if (element.key === 'fifthExercise') {
console.log('has')
} else {
awardName = 'fifthExercise'
this.homeService.addAward(this.userId, awardName).then(() => {
this.awardName = 'fifthExercise';
this.awarded = true;
});
}
}
});