Ejercicios repaso

Funciones puras

Una función a la que le pasemos una cadena y nos devuelva la palabra más larga
masLarga(‘hola que tal estamos’)-> ‘estamos’

Una función a la que le pasemos una cadena y nos cuente las consonantes

consonantes(‘praga’)->3

Una función a la que le pasemos una cadena y nos devuelva la palabra con más consonantes
masConsonantes(‘praga es guay’)->’praga’

function masLarga (cadena) {
// Si yo tengo una cadena y quiero las palabras lo primero es obtenerlas
  const palabras = cadena.split(' ')
  // Necesitaré algún sitio donde guardar la palabra más larga
  let larga = ''
  // Recorrer la lista de palabras a ver cual es la de mayor longitud
  for (let i = 0; i < palabras.length; i++) {
    // Si la longitud de la palabra actual es mayor que la que tengo
    if (palabras[i].length > larga.length) {
      larga = palabras[i]
    }
  }
  return larga
}

function masLargaSort (cadena) {
  const palabras = cadena.split(' ')
  palabras.sort((a, b) => b.length - a.length)
  return palabras[0]
}

function consonantes (cadena) {
  const vocales = vocales2(cadena)
  return cadena.length - vocales
}
// 'praga' split('') letra a letra slice/substr/subtring  cadena[i]
function consonantes2 (cadena) {
  const cons = 'bcdfghjklmnñpqrstvwxyz'
  cadena = cadena.toLowerCase()
  let total = 0
  for (let i = 0; i < cadena.length; i++) {
    // Si la letra está dentro de mis consonantes
    if (cons.indexOf(cadena.slice(i, i + 1)) > -1) {
      total++
    }
  }
  return total
}

function consonantesReg (cadena) {
  cadena = cadena.replace(/[^bcdfghjklmnñpqrstvwxyz]/gi, '')
  // cadena = cadena.replace(/[aeiou]/gi, '')
  return cadena.length
}

function masConsonantes (cadena) {
  // Si yo tengo una cadena y quiero las palabras lo primero es obtenerlas
  const palabras = cadena.split(' ')
  // Necesitaré algún sitio donde guardar la palabra con más consonantes
  let masC = ''
  // Recorrer la lista de palabras a ver cual es la de mayor longitud
  for (let i = 0; i < palabras.length; i++) {
    // Si las consoncantes de la palabra actual son más que la que tengo
    if (consonantesReg(palabras[i]) > consonantesReg(masC)) {
      masC = palabras[i]
    }
  }
  return masC
}

function masConsonantesSort (cadena) {
  const palabras = cadena.split(' ')
  palabras.sort((a, b) => consonantesReg(b) - consonantesReg(a))
  return palabras[0]
}

function vocales2 (cadena) {
  const vocal = ['a', 'e', 'i', 'o', 'u']
  total = 0
  for (const v of vocal) {
    total += apariciones(cadena, v)
  }
  return total
}

function apariciones (cadena, buscar) {
  let cont = 0
  let pos = cadena.indexOf(buscar)
  while (pos > -1) {
    cont++
    pos = cadena.indexOf(buscar, pos + 1)
  }
  return cont
}