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


    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.

    beary605, your solution won't work because it will always return 0 when b

    @Yellos `a` is supposed to be the *minimum* while `b` is *max*. Your example shows the minimum higher than the maximum!

  • 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`

    I like Yellos answer. And `0>=0==0<1` returns `true`

    @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.

  • JavaScript, 7 bytes


    a<n&n<b

    Golfed: ```a

    @A̲̲ That doesn't work in Javascript

License under CC-BY-SA with attribution


Content dated before 7/24/2021 11:53 AM