endsWith

endsWith

  • (suffix: string) => (aString: string) => boolean
  1. Test if one string ends with another

    const endsWithCD = endsWith('cd')
    
    endsWithCD('abcd') // is true
    endsWithCD('cdab') // is false
    const endsWithCD = endsWith('cd')
    
    endsWithCD('abcd') // is true
    endsWithCD('cdab') // is false
    
    const endsWithCD = endsWith('cd')
    
    endsWithCD('abcd') // is true
    endsWithCD('cdab') // is false
    const endsWithCD = endsWith('cd')
    
    endsWithCD('abcd') // is true
    endsWithCD('cdab') // is false
    
  2. Sometimes we want to see if a string ends with another. Below, someone turned in a lost notebook with only the last name printed, 'Davis.' Let's find which classes have a Davis.

    const classrooms = {
      A: ['phil smith', 'mary garcia', 'sarah miller'],
      B: ['matt davis', 'jason taylor', 'amy moore'],
      C: ['kim white', 'grace walker', 'sam davis'],
    }
    
    const endsWithDavis = endsWith(' davis')
    const roomHasDavis = any(endsWithDavis)
    const getRoomsWithDavis = compose([keepWhen(roomHasDavis), Object.keys])
    
    const roomsToCheck = getRoomsWithDavis(classrooms)
    console.log(roomsToCheck) // is [B, C]
    type Classrooms = Record<string, string[]>
    const classrooms: Classrooms = {
      A: ['phil smith', 'mary garcia', 'sarah miller'],
      B: ['matt davis', 'jason taylor', 'amy moore'],
      C: ['kim white', 'grace walker', 'sam davis'],
    }
    
    const endsWithDavis = endsWith(' davis')
    const roomHasDavis = any(endsWithDavis)<string[]>
    const getRoomsWithDavis = compose([
      keepWhen(roomHasDavis)<Classrooms>,
      Object.keys,
    ])
    
    const roomsToCheck = getRoomsWithDavis(classrooms)
    console.log(roomsToCheck) // is [B, C]
    
    const classrooms = {
      A: [
        'phil smith',
        'mary garcia',
        'sarah miller',
      ],
      B: ['matt davis', 'jason taylor', 'amy moore'],
      C: ['kim white', 'grace walker', 'sam davis'],
    }
    
    const endsWithDavis = endsWith(' davis')
    const roomHasDavis = any(endsWithDavis)
    const getRoomsWithDavis = compose([
      keepWhen(roomHasDavis),
      Object.keys,
    ])
    
    const roomsToCheck = getRoomsWithDavis(classrooms)
    console.log(roomsToCheck) // is [B, C]
    type Classrooms = Record<string, string[]>
    const classrooms: Classrooms = {
      A: [
        'phil smith',
        'mary garcia',
        'sarah miller',
      ],
      B: ['matt davis', 'jason taylor', 'amy moore'],
      C: ['kim white', 'grace walker', 'sam davis'],
    }
    
    const endsWithDavis = endsWith(' davis')
    const roomHasDavis = any(endsWithDavis)<string[]>
    const getRoomsWithDavis = compose([
      keepWhen(roomHasDavis)<Classrooms>,
      Object.keys,
    ])
    
    const roomsToCheck = getRoomsWithDavis(classrooms)
    console.log(roomsToCheck) // is [B, C]