# Check if a numeric array is sorted in JavaScript

Sometimes, it's useful to know if an array is sorted in **ascending or descending order**. This can be especially useful in combination with other algorithms, such as **binary search** or **sorting algorithms**.

Sorting the whole array and comparing it to itself is the **naive method**, yet it's wildly **inefficient**. The more efficient way is the traditional `for`

loop and some **early returns**.

Starting with the first two elements, calculate the `direction`

of the array. If the `direction`

changes at any point, return `0`

. If the array is **empty or has only one element**, return `0`

. If the `direction`

remains the same for the whole array, return the `Math.sign()`

of the `direction`

to get `-1`

for descending order and `1`

for ascending order.

const isSorted = arr => { if (arr.length <= 1) return 0; const direction = arr[1] - arr[0]; for (let i = 2; i < arr.length; i++) { if ((arr[i] - arr[i - 1]) * direction < 0) return 0; } return Math.sign(direction); }; isSorted([0, 1, 2, 2]); // 1 isSorted([4, 3, 2]); // -1 isSorted([4, 3, 5]); // 0 isSorted([4]); // 0