discardFirstWhile

discardFirstWhile

  • (predicate: Predicate) => (anArray: array) => array
  1. Discard the first elements that pass a condition

    const lt3 = n => n < 3
    const discardFirstWhileLt3 = discardFirstWhile(lt3)
    
    discardFirstWhileLt3([1, 2, 3, 4]) // is [3, 4]
    discardFirstWhileLt3([3, 4, 1]) // is [3, 4, 1]
    const lt3 = (n: number) => n < 3
    const discardFirstWhileLt3 = discardFirstWhile(lt3)
    
    discardFirstWhileLt3([1, 2, 3, 4]) // is [3, 4]
    discardFirstWhileLt3([3, 4, 1]) // is [3, 4, 1]
    
    const lt3 = n => n < 3
    const discardFirstWhileLt3 =
      discardFirstWhile(lt3)
    
    discardFirstWhileLt3([1, 2, 3, 4]) // is [3, 4]
    discardFirstWhileLt3([3, 4, 1]) // is [3, 4, 1]
    const lt3 = (n: number) => n < 3
    const discardFirstWhileLt3 =
      discardFirstWhile(lt3)
    
    discardFirstWhileLt3([1, 2, 3, 4]) // is [3, 4]
    discardFirstWhileLt3([3, 4, 1]) // is [3, 4, 1]
    
  2. This is useful when we have sorted data and don't need to filter over all of it. Below, we have a list of sorted test scores. We want to remove the zeroes since those students weren't in class.

    const scores = [0, 0, 70, 88, 92]
    
    const discardZeroes = discardFirstWhile(n => n === 0)
    const updatedScores = discardZeroes(scores)
    console.log(updatedScores)
    // is [70, 88, 92]
    const scores = [0, 0, 70, 88, 92]
    
    const discardZeroes = discardFirstWhile((n: number) => n === 0)
    const updatedScores = discardZeroes(scores)
    console.log(updatedScores)
    // is [70, 88, 92]
    
    const scores = [0, 0, 70, 88, 92]
    
    const discardZeroes = discardFirstWhile(
      n => n === 0
    )
    const updatedScores = discardZeroes(scores)
    console.log(updatedScores)
    // is [70, 88, 92]
    const scores = [0, 0, 70, 88, 92]
    
    const discardZeroes = discardFirstWhile(
      (n: number) => n === 0
    )
    const updatedScores = discardZeroes(scores)
    console.log(updatedScores)
    // is [70, 88, 92]