OOP/JavaScript - 删除引用时删除对象


teachers = [{name: 'Mary'},{name: 'Karen'}]
students = [{name: 'Joe'},{name: 'Bill'}]
courses = [{
name: 'math',
teacher: teachers[0],
students: [students[0]],
}]

删除teachers数组中的项时,还应删除courses数组中引用该teacher对象的所有项。有没有一种方法或模式可以在不遍历数组中的所有项目的情况下courses做到这一点?(实际应用要复杂得多。

如果您可以将courses保存在new WeakMap()中,它将解决您的问题。

const coursesWeekMap = new WeakMap();
coursesWeekMap.set(teachers[0], {
name: 'math',
teacher: teachers[0],
students: [students[0]],
});

有没有办法或模式可以在不遍历课程数组中的所有项目的情况下做到这一点?

不是真的,但是过滤器是一种简单的方法,为了整洁起见,您应该在删除之前执行此操作。

const deletedTeacher = {name: 'Mary'};
const changedCourses = courses.filter(c => c.teacher.name !== deletedTeacher.name);
// delete teacher from array whatever way you like, confirm that it has happened
courses = changedCourses

最新更新