diff --git a/Sprint-1/fix/median.js b/Sprint-1/fix/median.js index b22590bc6..552d0a9be 100644 --- a/Sprint-1/fix/median.js +++ b/Sprint-1/fix/median.js @@ -6,9 +6,32 @@ // 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]; - return median; -} + if (!Array.isArray(list) || list.length === 0) { + return null; + } + const numbersOnly = list.filter(element => typeof element === 'number'); + //console.log (numbersOnly); + if (numbersOnly.length === 0) { + return null; + } + + const sortedList = [...numbersOnly].sort((a, b) => a - b); + + if (sortedList.length % 2 === 0) { + const middleIndex = Math.floor(sortedList.length / 2); + return (sortedList[middleIndex - 1] + sortedList[middleIndex]) / 2; + } + const middleIndex = Math.floor(sortedList.length / 2); + + return sortedList[middleIndex]; + + + + //return median; + } + +const salaries = [10, 40, 50, 70, 90] +const median = calculateMedian(salaries); module.exports = calculateMedian; + diff --git a/Sprint-1/implement/dedupe.js b/Sprint-1/implement/dedupe.js index 781e8718a..2aa451654 100644 --- a/Sprint-1/implement/dedupe.js +++ b/Sprint-1/implement/dedupe.js @@ -1 +1,9 @@ -function dedupe() {} +function dedupe(list) { + if (!Array.isArray(list)) { + return []; + } + + return [...new Set(list)]; +} + +module.exports = dedupe; diff --git a/Sprint-1/implement/max.js b/Sprint-1/implement/max.js index 6dd76378e..eff491b6e 100644 --- a/Sprint-1/implement/max.js +++ b/Sprint-1/implement/max.js @@ -1,4 +1,12 @@ function findMax(elements) { + if (!Array.isArray(elements) || elements.length === 0) { + return -Infinity; + } + const numbersOnly = elements.filter(item => typeof item === 'number' && !isNaN(item)); + if (numbersOnly.length === 0) { + return -Infinity; + } + return Math.max(...numbersOnly); } module.exports = findMax; diff --git a/Sprint-1/implement/sum.js b/Sprint-1/implement/sum.js index 9062aafe3..73715b25a 100644 --- a/Sprint-1/implement/sum.js +++ b/Sprint-1/implement/sum.js @@ -1,4 +1,16 @@ function sum(elements) { + if (!Array.isArray(elements) || elements.length === 0) { + return 0; + } + + const numbersOnly = elements.filter(item => typeof item === "number" && !isNaN(item)); + + if (numbersOnly.length === 0) { + return 0; + } + + return numbersOnly.reduce((acc, curr) => acc + curr, 0); + } module.exports = sum;