withNumbersDescending

withNumbersDescending

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

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

    const players = [
      {
        name: 'Shohei Ohtani',
        homeRuns: 38,
        strikeouts: 125,
      },
      {
        name: 'Cal Raleigh',
        homeRuns: 41,
        strikeouts: 116,
      },
      {
        name: 'Aaron Judge',
        homeRuns: 37,
        strikeouts: 120,
      },
    ]
    
    const byHomeRunsDesc = compareByProp('homeRuns', withNumbersDescending)
    const orderPlayers = order(byHomeRunsDesc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    // ]
    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 byHomeRunsDesc = compareByProp('homeRuns', withNumbersDescending)<Player>
    const orderPlayers = order(byHomeRunsDesc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    // ]
    
    const players = [
      {
        name: 'Shohei Ohtani',
        homeRuns: 38,
        strikeouts: 125,
      },
      {
        name: 'Cal Raleigh',
        homeRuns: 41,
        strikeouts: 116,
      },
      {
        name: 'Aaron Judge',
        homeRuns: 37,
        strikeouts: 120,
      },
    ]
    
    const byHomeRunsDesc = compareByProp(
      'homeRuns',
      withNumbersDescending
    )
    const orderPlayers = order(byHomeRunsDesc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    // ]
    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 byHomeRunsDesc = compareByProp(
      'homeRuns',
      withNumbersDescending
    )<Player>
    const orderPlayers = order(byHomeRunsDesc)
    const updatedPlayers = orderPlayers(players)
    console.log(updatedPlayers)
    // is [
    //   {
    //     name: Cal Raleigh
    //     homeRuns: 41
    //     strikeouts: 116
    //   }
    //   {
    //     name: Shohei Ohtani
    //     homeRuns: 38
    //     strikeouts: 125
    //   }
    //   {
    //     name: Aaron Judge
    //     homeRuns: 37
    //     strikeouts: 120
    //   }
    // ]