mDiscardLast

mDiscardLast

  • (num: number) => (anArray: array) => anArray
  1. Discard the last num values

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

    const mDiscardLast2 = mDiscardLast(2)
    const arr = [1, 2, 3, 4]
    const mutatedArr = mDiscardLast2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    const mDiscardLast2 = mDiscardLast(2)
    const arr = [1, 2, 3, 4]
    const mutatedArr = mDiscardLast2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    
    const mDiscardLast2 = mDiscardLast(2)
    const arr = [1, 2, 3, 4]
    const mutatedArr = mDiscardLast2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    const mDiscardLast2 = mDiscardLast(2)
    const arr = [1, 2, 3, 4]
    const mutatedArr = mDiscardLast2(arr)
    console.log(mutatedArr === arr) // is true
    console.log(arr) // is [1, 2]
    
  2. Sometimes we get data in the form of arrays rather than objects. Below, we have weather data from a spreadsheet. For now we don't care about the max wind speed nor climate columns, so let's remove them.

    const [_headers, ...weatherData] = [
      ['date', 'low', 'high', 'wind', 'climate'],
      ['2025-04-08', 35, 50, 15, 'sunny'],
      ['2025-04-09', 40, 55, 10, 'cloudy'],
      ['2025-04-10', 38, 52, 12, 'rain shower'],
    ]
    
    const discardWindAndClimate = mDiscardLast(2)
    const discardAllWindAndClimate = forEach(discardWindAndClimate)
    discardAllWindAndClimate(weatherData)
    console.log(weatherData)
    // is [
    //  ['2025-04-08', 35, 50],
    //  ['2025-04-09', 40, 55],
    //  ['2025-04-10', 38, 52],
    // ]
    type Row = Array<string | number>
    type WeatherData = Row[]
    const [_headers, ...weatherData]: [string[], ...WeatherData] = [
      ['date', 'low', 'high', 'wind', 'climate'],
      ['2025-04-08', 35, 50, 15, 'sunny'],
      ['2025-04-09', 40, 55, 10, 'cloudy'],
      ['2025-04-10', 38, 52, 12, 'rain shower'],
    ]
    
    const discardWindAndClimate = mDiscardLast(2)<Row>
    const discardAllWindAndClimate = forEach(discardWindAndClimate)<WeatherData>
    discardAllWindAndClimate(weatherData)
    console.log(weatherData)
    // is [
    //  ['2025-04-08', 35, 50],
    //  ['2025-04-09', 40, 55],
    //  ['2025-04-10', 38, 52],
    // ]
    
    const [_headers, ...weatherData] = [
      ['date', 'low', 'high', 'wind', 'climate'],
      ['2025-04-08', 35, 50, 15, 'sunny'],
      ['2025-04-09', 40, 55, 10, 'cloudy'],
      ['2025-04-10', 38, 52, 12, 'rain shower'],
    ]
    
    const discardWindAndClimate = mDiscardLast(2)
    const discardAllWindAndClimate = forEach(
      discardWindAndClimate
    )
    discardAllWindAndClimate(weatherData)
    console.log(weatherData)
    // is [
    //  ['2025-04-08', 35, 50],
    //  ['2025-04-09', 40, 55],
    //  ['2025-04-10', 38, 52],
    // ]
    type Row = Array<string | number>
    type WeatherData = Row[]
    const [_headers, ...weatherData]: [
      string[],
      ...WeatherData,
    ] = [
      ['date', 'low', 'high', 'wind', 'climate'],
      ['2025-04-08', 35, 50, 15, 'sunny'],
      ['2025-04-09', 40, 55, 10, 'cloudy'],
      ['2025-04-10', 38, 52, 12, 'rain shower'],
    ]
    
    const discardWindAndClimate = mDiscardLast(2)<Row>
    const discardAllWindAndClimate = forEach(
      discardWindAndClimate
    )<WeatherData>
    discardAllWindAndClimate(weatherData)
    console.log(weatherData)
    // is [
    //  ['2025-04-08', 35, 50],
    //  ['2025-04-09', 40, 55],
    //  ['2025-04-10', 38, 52],
    // ]