numberIsBetween

numberIsBetween

  • (num1: number, num2: number, opts?: Options) => (aNumber: number) => boolean
  1. Test if a number is between two others. Inclusive by default.

    const isOneToFive = numberIsBetween(1, 5)
    
    isOneToFive(1) // is true
    isOneToFive(5) // is true
    isOneToFive(6) // is false
    const isOneToFive = numberIsBetween(1, 5)
    
    isOneToFive(1) // is true
    isOneToFive(5) // is true
    isOneToFive(6) // is false
    
    const isOneToFive = numberIsBetween(1, 5)
    
    isOneToFive(1) // is true
    isOneToFive(5) // is true
    isOneToFive(6) // is false
    const isOneToFive = numberIsBetween(1, 5)
    
    isOneToFive(1) // is true
    isOneToFive(5) // is true
    isOneToFive(6) // is false
    
  2. We often want to see if a number falls within a range. Below, we see if Amy, Kim, and Grace get the teen discount at the movies.

    const people = {
      amy: {
        age: 19,
      },
      kim: {
        age: 13,
      },
      grace: {
        age: 20,
      },
    }
    
    const isTeen = compose([get('age'), numberIsBetween(13, 19)])
    const applyTeenDiscount = person => ({
      ...person,
      getsTeenDiscount: isTeen(person),
    })
    
    const applyTeenDiscountToAll = mapValues(applyTeenDiscount)
    const updatedPeople = applyTeenDiscountToAll(people)
    console.log(updatedPeople)
    // is {
    //   amy: {
    //     age: 19,
    //     getsTeenDiscount: true,
    //   },
    //   kim: {
    //     age: 13,
    //     getsTeenDiscount: true,
    //   },
    //   grace: {
    //     age: 20,
    //     getsTeenDiscount: false,
    //   },
    // }
    type Person = {
      age: number
      getsTeenDiscount?: boolean
    }
    type People = Record<string, Person>
    const people: People = {
      amy: {
        age: 19,
      },
      kim: {
        age: 13,
      },
      grace: {
        age: 20,
      },
    }
    
    const isTeen = compose([get('age')<Person>, numberIsBetween(13, 19)])
    const applyTeenDiscount = (person: Person) => ({
      ...person,
      getsTeenDiscount: isTeen(person),
    })
    
    const applyTeenDiscountToAll = mapValues(applyTeenDiscount)<People>
    const updatedPeople = applyTeenDiscountToAll(people)
    console.log(updatedPeople)
    // is {
    //   amy: {
    //     age: 19,
    //     getsTeenDiscount: true,
    //   },
    //   kim: {
    //     age: 13,
    //     getsTeenDiscount: true,
    //   },
    //   grace: {
    //     age: 20,
    //     getsTeenDiscount: false,
    //   },
    // }
    
    const people = {
      amy: {
        age: 19,
      },
      kim: {
        age: 13,
      },
      grace: {
        age: 20,
      },
    }
    
    const isTeen = compose([
      get('age'),
      numberIsBetween(13, 19),
    ])
    const applyTeenDiscount = person => ({
      ...person,
      getsTeenDiscount: isTeen(person),
    })
    
    const applyTeenDiscountToAll = mapValues(
      applyTeenDiscount
    )
    const updatedPeople =
      applyTeenDiscountToAll(people)
    console.log(updatedPeople)
    // is {
    //   amy: {
    //     age: 19,
    //     getsTeenDiscount: true,
    //   },
    //   kim: {
    //     age: 13,
    //     getsTeenDiscount: true,
    //   },
    //   grace: {
    //     age: 20,
    //     getsTeenDiscount: false,
    //   },
    // }
    type Person = {
      age: number
      getsTeenDiscount?: boolean
    }
    type People = Record<string, Person>
    const people: People = {
      amy: {
        age: 19,
      },
      kim: {
        age: 13,
      },
      grace: {
        age: 20,
      },
    }
    
    const isTeen = compose([
      get('age')<Person>,
      numberIsBetween(13, 19),
    ])
    const applyTeenDiscount = (person: Person) => ({
      ...person,
      getsTeenDiscount: isTeen(person),
    })
    
    const applyTeenDiscountToAll = mapValues(
      applyTeenDiscount
    )<People>
    const updatedPeople =
      applyTeenDiscountToAll(people)
    console.log(updatedPeople)
    // is {
    //   amy: {
    //     age: 19,
    //     getsTeenDiscount: true,
    //   },
    //   kim: {
    //     age: 13,
    //     getsTeenDiscount: true,
    //   },
    //   grace: {
    //     age: 20,
    //     getsTeenDiscount: false,
    //   },
    // }