- Instant help with your JavaScript coding problems

# Check if number is odd or even in JavaScript

Question:
How to check if number is odd or even in JavaScript?
``````function isOdd(number) {
return Math.abs(number % 2) === 1;
}

function isEven(number) {
return number % 2 === 0;
}``````
Description:

In JavaScript, you can easily check whether an integer is even or odd by using the remainder / modulo `%` operator.
If a number divided by 2 gives a remainder of `1` , it is odd, if it gives a remainder of `0` , it is even. You can implement this simply as follows:

``````function isOdd(number) {
return number % 2 === 1;
}

function isEven(number) {
return number % 2 === 0;
}``````

This is quite simple, but unfortunately not always appropriate. For example, it does not work correctly for negative numbers:

``console.log(isOdd(-5)); // false but it should be true``

To handle negative numbers, you just need to modify the `isOdd` function to take the absolute value of the result.

``````function isOdd(number) {
return Math.abs(number % 2) === 1;
}``````

Another problem that may arise with JavaScript is that our input parameter is not a number. Therefore, you may want to first check if the input value is a `number` and if not then return `undefined` instead of `true` or `false` :

``````function isOdd(number) {
if (Number.isFinite(number) === false) {
return undefined;
}
return Math.abs(number % 2) === 1;
}``````

However, this is still not perfect. In JavaScript, the value of a form input field is always a `string` , even if its `type` is set to `number` . Let's look at the following example:

``<input type="text" name="name" id="input-field" />``

And the JavaScript code to handle the input:

``````document.addEventListener("DOMContentLoaded", () => {
const input = document.querySelector("#input-field");

const userInput = event.target.value;
console.log(userInput + ' is odd? ' + isOdd(userInput));
});
});``````

In this case, even if the user enters a valid number, the `Number.isFinite` check will result that the return value of our function will always be undefined.

For this reason, you also need to include a conversion to a number in the code:

``````function isOdd(number) {
if (Number.isFinite(parseInt(number)) === false) {
return undefined;
}
return Math.abs(number % 2) === 1;
}``````

Finally, this is what the two functions look like in TypeScript format:

``````function isOdd(number:number):boolean|undefined {
if (Number.isFinite(parseInt(number)) === false) {
return undefined;
}
return Math.abs(number % 2) === 1;
}

function isEven(number:number):boolean|undefined {
return number % 2 === 0;
}``````
Share "How to check if number is odd or even in JavaScript?"
Tags:
odd, even, check, test, determine, number, value, javascript
Technical term:
Check if number is odd or even in JavaScript