Skip to content

Commit 94ba304

Browse files
refactored the sum function to pass the last two cases added of throwing an error
1 parent 15b25f3 commit 94ba304

1 file changed

Lines changed: 19 additions & 10 deletions

File tree

‎Sprint-1/implement/sum.js‎

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
function sum(elements) {
2-
//filter the array to be numerical values only
3-
const numbersOnly = elements.filter((item)=> typeof item === 'number' && !Number.isNaN(item));
2+
if (!Array.isArray(elements)) {
3+
throw new Error("sum requires an array of numbers");
4+
}
45

5-
if(numbersOnly.length === 0){
6-
return 0
7-
}
8-
let total = 0 ;
9-
for( let i = 0 ; i < numbersOnly.length; i ++ ){
10-
total += numbersOnly[i];
11-
}
12-
return total ;
6+
if (elements.length === 0) {
7+
return 0;
8+
}
9+
// every element must be a valid number
10+
const allNumbers = elements.every(
11+
(item) => typeof item === "number" && !Number.isNaN(item)
12+
);
13+
if (!allNumbers) {
14+
throw new Error("sum requires an array of numbers");
15+
}
16+
17+
let total = 0;
18+
for (let i = 0; i < elements.length; i++) {
19+
total += elements[i];
20+
}
21+
return total;
1322
}
1423

1524
module.exports = sum;

0 commit comments

Comments
 (0)