File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -130,19 +130,23 @@ function updateStatistics(subjects) {
130130 return ;
131131 }
132132
133- const scores = subjects . map ( subject => subject . scoreValue ) ;
134- const highest = Math . max ( ...scores ) ;
135-
136- // 計算加權平均
133+ // ⚡ Bolt: Combined array iterations to avoid multiple O(n) passes
134+ // and prevent RangeError from Math.max(...scores) on large arrays
135+ let highest = - Infinity ;
137136 let totalWeightedScore = 0 ;
138137 let totalWeight = 0 ;
139138
140- subjects . forEach ( subject => {
139+ for ( const subject of subjects ) {
141140 const score = subject . scoreValue ;
141+
142+ // ⚡ Compute max score
143+ if ( score > highest ) highest = score ;
144+
145+ // ⚡ Compute weighted average
142146 const weight = getSubjectWeight ( subject . SubjectName ) ;
143147 totalWeightedScore += score * weight ;
144148 totalWeight += weight ;
145- } ) ;
149+ }
146150
147151 const weightedAvg = totalWeight > 0 ? totalWeightedScore / totalWeight : 0 ;
148152
You can’t perform that action at this time.
0 commit comments