# Object for odd and even #'s

My code just comes out with “odd”. What am I doing wrong?
Instructions:

Write a function named evenOdd that takes two numbers and returns an object with the numbers and whether they are even or odd.

Example:

If you pass 1,4 it should return {"1": "odd", "2": "even", "3": "odd", "4": "even"}

My code:

function evenOdd(num, num2) {
let obj = {};

for (let i = num; i <= num2; i++) {
if(obj[i] % 2 !== 0) {
obj[i] = "odd"

} else if(obj[i] % 2 !== 1){
obj[i] = "even"
}
}

return obj;
};

if(obj[i] % 2 !== 0) {

Why are you checking if obj[i] is even? Shouldn’t you be checking if i is even?

And your line } else if(obj[i] % 2 !== 1){ - the if is redundant. There are only two possibilities, you’ve already checked if it’s odd so you don’t need to check if it’s even - a simple if will do it.

1 Like

Thanks, for some odd reason I think after an if statement HAS to come an else.

Somehow, it’s still not passing:

function evenOdd(num, num2) {
let obj = {};

for (let i = num; i <= num2; i++) {
if(i % 2 !== 0) {
obj[i] = "odd"

}
if(i % 2 !== 1){
obj[i] = "even"
}
}

return obj;
};

I need to have zero pass as an empty object, but am I not already doing that?

EDIT: Nevermind, my people. Thanks to all of you guys, I’m finally understanding all of this better:

function evenOdd(num, num2) {
let obj = {};

for (let i = num; i <= num2; i++) {
if (num === 0 && num2 === 0){
obj = {};
} else if(i % 2 !== 0) {
obj[i] = "odd"

} else{
obj[i] = "even"

}
}

return obj;
};