keepFirst

keepFirst

  • (num: number) => (sequence: Sequence) => Sequence
  1. Keep the first num elements of a sequence

    const keepFirstThree = keepFirst(3)
    
    keepFirstThree(['a', 'b', 'c', 'd']) // is ['a', 'b', 'c']
    keepFirstThree('abcd') // is 'abc'
    keepFirstThree(['a']) // is ['a']
    const keepFirstThree = keepFirst(3)
    
    keepFirstThree(['a', 'b', 'c', 'd']) // is ['a', 'b', 'c']
    keepFirstThree('abcd') // is 'abc'
    keepFirstThree(['a']) // is ['a']
    
    const keepFirstThree = keepFirst(3)
    
    keepFirstThree(['a', 'b', 'c', 'd']) // is ['a', 'b', 'c']
    keepFirstThree('abcd') // is 'abc'
    keepFirstThree(['a']) // is ['a']
    const keepFirstThree = keepFirst(3)
    
    keepFirstThree(['a', 'b', 'c', 'd']) // is ['a', 'b', 'c']
    keepFirstThree('abcd') // is 'abc'
    keepFirstThree(['a']) // is ['a']
    
  2. Sometimes we have ordered data and only care about the first elements. Below, we have a list of boots ordered by number sold. Let's display our top three selling boots.

    const bootsByNumSold = [
      {
        name: 'Columbia Escape',
        sold: 82,
      },
      {
        name: 'Keen Gibson',
        sold: 79,
      },
      {
        name: 'Timberland Classic',
        sold: 65,
      },
      {
        name: 'Nortiv Armadillo',
        sold: 58,
      },
    ]
    
    const keepTopThree = keepFirst(3)
    const getTopSellers = compose([
      keepTopThree,
      mapValues(get('name')),
      joinValues(', '),
    ])
    const topSellers = getTopSellers(bootsByNumSold)
    console.log(topSellers)
    // prints
    // Columbia Escape, Keen Gibson, Timberland Classic
    type Boot = {
      name: string
      sold: number
    }
    
    const bootsByNumSold = [
      {
        name: 'Columbia Escape',
        sold: 82,
      },
      {
        name: 'Keen Gibson',
        sold: 79,
      },
      {
        name: 'Timberland Classic',
        sold: 65,
      },
      {
        name: 'Nortiv Armadillo',
        sold: 58,
      },
    ]
    
    const keepTopThree = keepFirst(3)<Boot[]>
    const getTopSellers = compose([
      keepTopThree,
      mapValues(get('name')),
      joinValues(', '),
    ])
    const topSellers = getTopSellers(bootsByNumSold)
    console.log(topSellers)
    // prints
    // Columbia Escape, Keen Gibson, Timberland Classic
    
    const bootsByNumSold = [
      {
        name: 'Columbia Escape',
        sold: 82,
      },
      {
        name: 'Keen Gibson',
        sold: 79,
      },
      {
        name: 'Timberland Classic',
        sold: 65,
      },
      {
        name: 'Nortiv Armadillo',
        sold: 58,
      },
    ]
    
    const keepTopThree = keepFirst(3)
    const getTopSellers = compose([
      keepTopThree,
      mapValues(get('name')),
      joinValues(', '),
    ])
    const topSellers = getTopSellers(bootsByNumSold)
    console.log(topSellers)
    // prints
    // Columbia Escape, Keen Gibson, Timberland Classic
    type Boot = {
      name: string
      sold: number
    }
    
    const bootsByNumSold = [
      {
        name: 'Columbia Escape',
        sold: 82,
      },
      {
        name: 'Keen Gibson',
        sold: 79,
      },
      {
        name: 'Timberland Classic',
        sold: 65,
      },
      {
        name: 'Nortiv Armadillo',
        sold: 58,
      },
    ]
    
    const keepTopThree = keepFirst(3)<Boot[]>
    const getTopSellers = compose([
      keepTopThree,
      mapValues(get('name')),
      joinValues(', '),
    ])
    const topSellers = getTopSellers(bootsByNumSold)
    console.log(topSellers)
    // prints
    // Columbia Escape, Keen Gibson, Timberland Classic