Skip to content

Commit cbd8d1b

Browse files
committed
fixed the implementation of median.js of sprint-1
1 parent 96d077b commit cbd8d1b

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

Sprint-1/fix/median.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,30 @@
66
// or 'list' has mixed values (the function is expected to sort only numbers).
77

88
function 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+
1435
module.exports = calculateMedian;

0 commit comments

Comments
 (0)