File tree Expand file tree Collapse file tree 1 file changed +24
-3
lines changed
Expand file tree Collapse file tree 1 file changed +24
-3
lines changed Original file line number Diff line number Diff line change 66// or 'list' has mixed values (the function is expected to sort only numbers).
77
88function calculateMedian ( list ) {
9- const middleIndex = Math . floor ( list . length / 2 ) ;
10- const median = list . splice ( middleIndex , 1 ) [ 0 ] ;
11- return median ;
9+ // If list is not an array, return null
10+ if ( ! Array . isArray ( list ) ) return null ;
11+
12+ // Filter only real numbers
13+ const numbers = list . filter (
14+ ( item ) => typeof item === "number" && ! isNaN ( item )
15+ ) ;
16+
17+ // If no numbers, return null
18+ if ( numbers . length === 0 ) return null ;
19+
20+ // Sort numerically
21+ numbers . sort ( ( a , b ) => a - b ) ;
22+
23+ const mid = Math . floor ( numbers . length / 2 ) ;
24+
25+ // Odd length → return middle
26+ if ( numbers . length % 2 === 1 ) {
27+ return numbers [ mid ] ;
28+ }
29+
30+ // Even length → average of two middle values
31+ return ( numbers [ mid - 1 ] + numbers [ mid ] ) / 2 ;
1232}
1333
34+
1435module . exports = calculateMedian ;
You can’t perform that action at this time.
0 commit comments