@@ -54,6 +54,18 @@ function mapScore(arr: CourseScoreRecord[]): {
5454 return arr . map ( ( v ) => ( { value : v . courseScore || 0 , weight : v . credit } ) )
5555}
5656
57+ /**
58+ * 从一个课程数组里筛选出所有成绩合法的课程
59+ *
60+ * @param {CourseScoreRecord[] } arr 一个课程数组
61+ * @returns 筛选出的所有成绩合法的课程(成绩存在且非负)
62+ */
63+ function removeIllegalScoreCourses (
64+ arr : CourseScoreRecord [ ]
65+ ) : CourseScoreRecord [ ] {
66+ return arr . filter ( ( v ) => v . courseScore && v . courseScore > 0 )
67+ }
68+
5769/**
5870 * 从一个课程数组里筛选出所有的必修课程
5971 *
@@ -91,7 +103,11 @@ function getCompulsoryCoursesGPA(arr: CourseScoreRecord[]): number {
91103 * @returns 必修加权平均分
92104 */
93105function getSelectedCoursesScore ( arr : CourseScoreRecord [ ] ) : number {
94- return reserveDigits ( getWeightedAverage ( mapScore ( getSelectedCourses ( arr ) ) ) )
106+ return reserveDigits (
107+ getWeightedAverage (
108+ mapScore ( removeIllegalScoreCourses ( getSelectedCourses ( arr ) ) )
109+ )
110+ )
95111}
96112
97113/**
@@ -101,7 +117,11 @@ function getSelectedCoursesScore(arr: CourseScoreRecord[]): number {
101117 * @returns 选中课程加权平均绩点
102118 */
103119function getSelectedCoursesGPA ( arr : CourseScoreRecord [ ] ) : number {
104- return reserveDigits ( getWeightedAverage ( mapGPA ( getSelectedCourses ( arr ) ) ) )
120+ return reserveDigits (
121+ getWeightedAverage (
122+ mapGPA ( removeIllegalScoreCourses ( getSelectedCourses ( arr ) ) )
123+ )
124+ )
105125}
106126
107127/**
@@ -111,7 +131,11 @@ function getSelectedCoursesGPA(arr: CourseScoreRecord[]): number {
111131 * @returns 必修加权平均分
112132 */
113133function getCompulsoryCoursesScore ( arr : CourseScoreRecord [ ] ) : number {
114- return reserveDigits ( getWeightedAverage ( mapScore ( getCompulsoryCourses ( arr ) ) ) )
134+ return reserveDigits (
135+ getWeightedAverage (
136+ mapScore ( removeIllegalScoreCourses ( getCompulsoryCourses ( arr ) ) )
137+ )
138+ )
115139}
116140
117141/**
@@ -121,7 +145,9 @@ function getCompulsoryCoursesScore(arr: CourseScoreRecord[]): number {
121145 * @returns 全部课程加权平均绩点
122146 */
123147function getAllCoursesGPA ( arr : CourseScoreRecord [ ] ) : number {
124- return reserveDigits ( getWeightedAverage ( mapGPA ( arr ) ) )
148+ return reserveDigits (
149+ getWeightedAverage ( mapGPA ( removeIllegalScoreCourses ( arr ) ) )
150+ )
125151}
126152
127153/**
@@ -131,7 +157,9 @@ function getAllCoursesGPA(arr: CourseScoreRecord[]): number {
131157 * @returns 全部课程加权平均分
132158 */
133159function getAllCoursesScore ( arr : CourseScoreRecord [ ] ) : number {
134- return reserveDigits ( getWeightedAverage ( mapScore ( arr ) ) )
160+ return reserveDigits (
161+ getWeightedAverage ( mapScore ( removeIllegalScoreCourses ( arr ) ) )
162+ )
135163}
136164
137165/**
0 commit comments