У меня есть массив угловых объектов. Я хочу заменить весь элемент в массиве другим элементом.
export interface modelCourse{
var1: number;
var2: number;
}
Я хочу сделать что-то вроде этого:
updateResults(myCourse: modelCourse) {
this.allCourses.forEach(element => {
if (myCourse.Id=== element.Id) {
element = myCourse; // this part doesn't work as expected
}
});
}
Где
allCourses: modelCourse[] = [];
И allCourses проводит все мои курсы.

Если вам нужно найти только один соответствующий элемент, вам не нужно перебирать все элементы, просто используйте метод findIndex. Это найдет индекс одного нужного вам элемента, не просматривая их все в цикле.
Затем вы можете использовать этот индекс для обновления исходного массива.
updateResults(myCourse: modelCourse) {
const foundElementIndex = this.allCourses.findIndex(element => myCourse.id === element.id);
this.allCourses[foundElementIndex] = myCourse;
}
Я сделал stackblitz здесь: https://stackblitz.com/edit/angular-hxxddn
Спасибо DeborahK. Однако я не понимаю, как это заменяет курс в моем массиве на myCourse?
Я сделал стекблитц. См. Исправленный ответ.
Пожалуйста, используйте Array.map для обновления this.allCourses.
updateResults(myCourse: modelCourse) {
this.allCourses = this.allCourses.map(element => {
if (myCourse.Id === element.Id) {
return myCourse;
}
return element;
});
}
Возможный дубликат Как изменить значение объекта, находящегося внутри массива, с помощью JavaScript или jQuery?