Issue
I’m trying to answer for this question:
"Use for loop to iterate from 0 to 100 and print the sum of all evens and the sum of all odds."
and my code is:
numbersE = []
numbersO = []
let sumE = 0
let sumO = 0
for (i=0;i<=100;i++) {
if(i % 2 == 0){
numbersE.push(i)
}
else {
numbersO.push(i)
}
sumE += numbersE[i]
sumO += numbersO[i]
}
console.log(sumE, sumO)
Nan Nan
where is the my mistake ?
Solution
-
Let’s start with the loop. At i=0, if statement is triggered and 0 is pushed to the array numbersE and hence sumE = 0. But the array numbersO is empty because the for loop didn’t push any values to numbersO. Therefore at i=0, sumO returns NaN.
-
Similarly when i>0, you are trying to access the index of arrays numbersE, numbersO which does not exist. For example, at i=10, 10%2 equals 0, hence 10 is pushed to the array numbersE. And your code adds an element from the array numbersE with index 10 to the variable sumE and stores it in sumE. But the problem here is that the array numbersE doesn’t have an element at index 10. Hence it returns NaN.
This can be solved by:
let i;
let sumE = 0;
let sumO = 0;
for (i = 0; i <= 100; i++) {
i % 2 === 0 ? (sumE += i) : (sumO += 1);
}
console.log(sumE, sumO);
Answered By – Pranav Reddy
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0