withNumbersAscending

withNumbersAscending

  • (left: number, right: number) => number
  1. A compare function which orders numbers from smallest to largest.

    const nums = [2, 3, 1]
    const updatedNums = nums.toSorted(withNumbersAscending)
    console.log(updatedNums) // is [1, 2, 3]
    const nums = [2, 3, 1]
    const updatedNums = nums.toSorted(withNumbersAscending)
    console.log(updatedNums) // is [1, 2, 3]
    
    const nums = [2, 3, 1]
    const updatedNums = nums.toSorted(
      withNumbersAscending
    )
    console.log(updatedNums) // is [1, 2, 3]
    const nums = [2, 3, 1]
    const updatedNums = nums.toSorted(
      withNumbersAscending
    )
    console.log(updatedNums) // is [1, 2, 3]
    
  2. We often need to order numerically. Below, we have baseball's home run leaders. Let's see who has the fewest strikeouts.

    const players = [
      {
        name: 'Shohei Ohtani',
        homeRuns: 38,
        strikeouts: 125,
      },
      {
        name: 'Cal Raleigh',
        homeRuns: 41,
        strikeouts: 116,
      },
      {
        name: 'Aaron Judge',
        homeRuns: 37,
        strikeouts: 120,
      },
    ]
    
    const byStrikeoutsAsc = compareByProp('strikeouts', withNumbersAscending)
    const orderPlayers = order(byStrikeoutsAsc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    // ]
    type Player = {
      name: string
      homeRuns: number
      strikeouts: number
    }
    
    const players: Player[] = [
      {
        name: 'Shohei Ohtani',
        homeRuns: 38,
        strikeouts: 125,
      },
      {
        name: 'Cal Raleigh',
        homeRuns: 41,
        strikeouts: 116,
      },
      {
        name: 'Aaron Judge',
        homeRuns: 37,
        strikeouts: 120,
      },
    ]
    
    const byStrikeoutsAsc = compareByProp(
      'strikeouts',
      withNumbersAscending
    )<Player>
    const orderPlayers = order(byStrikeoutsAsc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    // ]
    
    const players = [
      {
        name: 'Shohei Ohtani',
        homeRuns: 38,
        strikeouts: 125,
      },
      {
        name: 'Cal Raleigh',
        homeRuns: 41,
        strikeouts: 116,
      },
      {
        name: 'Aaron Judge',
        homeRuns: 37,
        strikeouts: 120,
      },
    ]
    
    const byStrikeoutsAsc = compareByProp(
      'strikeouts',
      withNumbersAscending
    )
    const orderPlayers = order(byStrikeoutsAsc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    // ]
    type Player = {
      name: string
      homeRuns: number
      strikeouts: number
    }
    
    const players: Player[] = [
      {
        name: 'Shohei Ohtani',
        homeRuns: 38,
        strikeouts: 125,
      },
      {
        name: 'Cal Raleigh',
        homeRuns: 41,
        strikeouts: 116,
      },
      {
        name: 'Aaron Judge',
        homeRuns: 37,
        strikeouts: 120,
      },
    ]
    
    const byStrikeoutsAsc = compareByProp(
      'strikeouts',
      withNumbersAscending
    )<Player>
    const orderPlayers = order(byStrikeoutsAsc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    // ]