diff --git a/Sprint-1/fix/median.js b/Sprint-1/fix/median.js index b22590bc6..77c8bdb9b 100644 --- a/Sprint-1/fix/median.js +++ b/Sprint-1/fix/median.js @@ -6,9 +6,24 @@ // or 'list' has mixed values (the function is expected to sort only numbers). function calculateMedian(list) { - const middleIndex = Math.floor(list.length / 2); - const median = list.splice(middleIndex, 1)[0]; + if (!Array.isArray(list)){ + return null; + } + const numbersOnly = list.filter(item => typeof item === "number"); + if (numbersOnly.length === 0){ + return null; + } + numbersOnly.sort((a,b)=>a-b) + + const middleIndex = Math.floor(numbersOnly.length / 2); + if (numbersOnly.length % 2 === 0){ + return (numbersOnly[middleIndex-1] + numbersOnly[middleIndex])/2; + } else { + return numbersOnly[middleIndex]; + } + const median = numbersOnly.splice(middleIndex, 1)[0]; return median; + } module.exports = calculateMedian; diff --git a/Sprint-1/package-lock.json b/Sprint-1/package-lock.json index 83e427d0b..b52480af5 100644 --- a/Sprint-1/package-lock.json +++ b/Sprint-1/package-lock.json @@ -56,6 +56,7 @@ "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.25.7", @@ -1368,6 +1369,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001663", "electron-to-chromium": "^1.5.28",