File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed
Expand file tree Collapse file tree 1 file changed +15
-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 ( ! Array . isArray ( list ) ) return null ; // checks if a list is an array
10+ const numbers = list . filter ( x => typeof x === "number" ) ; //keeps only numbers
11+ if ( numbers . length === 0 ) return null ;
12+ const sorted = numbers . slice ( ) . sort ( ( a , b ) => a - b ) ;
13+
14+ const middleIndex = Math . floor ( sorted . length / 2 ) ;
15+
16+ let median ;
17+ if ( sorted . length % 2 === 0 ) {
18+ median = ( sorted [ middleIndex - 1 ] + sorted [ middleIndex ] ) / 2 ;
19+ }
20+ else {
21+ median = sorted [ middleIndex ] ;
22+ }
23+ return median
1224}
1325
1426module . exports = calculateMedian ;
You can’t perform that action at this time.
0 commit comments