mKeepFirst

mKeepFirst

  • (num: number) => (anArray: array) => anArray
  1. Keep the first num elements of an array

    Consider keepFirst instead.
    This is for the uncommon case where mutating anArray is required.

    const mKeepFirst2 = mKeepFirst(2)
    
    const arr = [1, 2, 3, 4]
    const mutatedArr = mKeepFirst2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    const mKeepFirst2 = mKeepFirst(2)
    
    const arr = [1, 2, 3, 4]
    const mutatedArr = mKeepFirst2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    
    const mKeepFirst2 = mKeepFirst(2)
    
    const arr = [1, 2, 3, 4]
    const mutatedArr = mKeepFirst2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    const mKeepFirst2 = mKeepFirst(2)
    
    const arr = [1, 2, 3, 4]
    const mutatedArr = mKeepFirst2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    
  2. Sometimes we have ordered data and only care about the first elements. Below, we have the top 5 women of the Paris Olympics Single Canoe Slalom event. Let's find the medalists.

    const canoeSlalomResults = [
      { name: 'jessica', time: 101.06 },
      { name: 'elena', time: 103.54 },
      { name: 'evy', time: 109.95 },
      { name: 'zuzana', time: 111.07 },
      { name: 'ana', time: 112.7 },
    ]
    
    const keepMedalists = mKeepFirst(3)
    keepMedalists(canoeSlalomResults)
    const getNames = mapValues(get('name'))
    const medalists = getNames(canoeSlalomResults)
    console.log(medalists)
    // is [
    //  jessica
    //  elena
    //  evy
    // ]
    type Result = {
      name: string
      time: number
    }
    
    const canoeSlalomResults: Result[] = [
      { name: 'jessica', time: 101.06 },
      { name: 'elena', time: 103.54 },
      { name: 'evy', time: 109.95 },
      { name: 'zuzana', time: 111.07 },
      { name: 'ana', time: 112.7 },
    ]
    
    const keepMedalists = mKeepFirst(3)<Result[]>
    keepMedalists(canoeSlalomResults)
    const getName = get('name')<Result>
    const getAllNames = mapValues(getName)<Result[]>
    const medalists = getAllNames(canoeSlalomResults)
    console.log(medalists)
    // is [
    //  jessica
    //  elena
    //  evy
    // ]
    
    const canoeSlalomResults = [
      { name: 'jessica', time: 101.06 },
      { name: 'elena', time: 103.54 },
      { name: 'evy', time: 109.95 },
      { name: 'zuzana', time: 111.07 },
      { name: 'ana', time: 112.7 },
    ]
    
    const keepMedalists = mKeepFirst(3)
    keepMedalists(canoeSlalomResults)
    const getNames = mapValues(get('name'))
    const medalists = getNames(canoeSlalomResults)
    console.log(medalists)
    // is [
    //  jessica
    //  elena
    //  evy
    // ]
    type Result = {
      name: string
      time: number
    }
    
    const canoeSlalomResults: Result[] = [
      { name: 'jessica', time: 101.06 },
      { name: 'elena', time: 103.54 },
      { name: 'evy', time: 109.95 },
      { name: 'zuzana', time: 111.07 },
      { name: 'ana', time: 112.7 },
    ]
    
    const keepMedalists = mKeepFirst(3)<Result[]>
    keepMedalists(canoeSlalomResults)
    const getName = get('name')<Result>
    const getAllNames = mapValues(getName)<Result[]>
    const medalists = getAllNames(canoeSlalomResults)
    console.log(medalists)
    // is [
    //  jessica
    //  elena
    //  evy
    // ]