# Shortest code to check if a number is in a range in JavaScript

This is how I checkout to see if a number is in a range (in between two other numbers):

var a = 10,
b = 30,
x = 15,
y = 35;

x < Math.max(a,b) && x > Math.min(a,b) // -> true
y < Math.max(a,b) && y > Math.min(a,b) // -> false


I have to do this math in my code a lot and I'm looking for shorter equivalent code.

This is a shorter version I came up with. But I am sure it can get much shorter:

a < x && x < b
true
a < y && y < b
false


But downside is I have to repeat x or y

• a<x&x<b will return 1 or 0, and is 7 characters shorter. Oct 10, 2012 at 1:16
• For code-golf purposes beary605's solution is best, but if you're using the code a lot you'd be better off declaring a function like within(a,b) or inrange(a,b) somewhere in your code and using that. It's instantly obvious what it does and therefore easier to maintain in the future. Oct 10, 2012 at 11:19
• beary605, your solution won't work because it will always return 0 when b<a even if x is in between a and b (for example when a=20; b=10; x=15) Oct 19, 2012 at 22:23
• @Yellos a is supposed to be the minimum while b is max. Your example shows the minimum higher than the maximum!
– bryc
Dec 30, 2016 at 22:52

13 chars, checks both variants a<b and b<a

(x-a)*(x-b)<0


In C may be used expression (may be also in JavaScript). 11 chars, No multiplications (fast)

(x-a^x-b)<0

a<x==x<b


JavaScript, 8 chars.

• 0<0==0<1 -> false Oct 20, 2012 at 0:28
• I like Yellos answer. And 0>=0==0<1 returns true
– tim
Jul 10, 2013 at 23:43
• @Mohsen the OP's request was a number in between two limiting numbers, not including them. Therefore, 0<0==0<1 should return false, because in that case, 0 is the lower limit, but also the number that should be in between the range. And they are equal. Apr 10, 2017 at 14:16

# JavaScript, 7 bytes

a<n&n<b

• Golfed: a<n<b
– user85052
Dec 12, 2019 at 12:49
• @A̲̲ That doesn't work in Javascript
– Jo King
Dec 12, 2019 at 12:52