How to Return All Odd Numbers in a JavaScript Array?

You can find all odd numbers in a JavaScript array by:

You should avoid checks for odd numbers with "n % 2 === 1" (where n is an integer, and % is the remainder operator) because, for negative numbers, this would return -1. Therefore, it may be easier to simply check if the number is not an even number (i.e. n % 2 !== 0) because it accounts for both, negative and positive numbers (since -0 === 0 in JavaScript). Otherwise, you would need an extra/explicit check for negative numbers.

Using Array.prototype.filter()

To get all odd numbers in an array of integers using the Array.prototype.filter() method, you can do the following:

// ES5+
const numbers = [-5, -2, -1, 0, 1, 3, 4, 7];
const oddNumbers = numbers.filter(function (number) {
    return number % 2 !== 0;
});

console.log(oddNumbers); // [-5, -1, 1, 3, 7]

This would return a new array containing all odd numbers. In ES6+, you can shorten this to a one-liner using the arrow function syntax:

// ES6+
const numbers = [-5, -2, -1, 0, 1, 3, 4, 7];
const oddNumbers = numbers.filter((number) => number % 2 !== 0);

console.log(oddNumbers); // [-5, -1, 1, 3, 7]

When no matches are found, an empty array is returned:

// ES6+
const numbers = [-2, 0, 4];
const oddNumbers = numbers.filter((number) => number % 2 !== 0);

console.log(oddNumbers); // []

Using a Loop

You can loop over an array of integers and create a new array to which you add all odd numbers to, for example, like so:

const numbers = [-5, -2, -1, 0, 1, 3, 4, 7];
const oddNumbers = [];

for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 !== 0) {
        oddNumbers.push(numbers[i]);
    }
}

console.log(oddNumbers); // [-5, -1, 1, 3, 7]

This would return a new array containing all odd numbers, and when no match is found, an empty array is returned.


This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.