Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

328
Visualizações
JavaScript intenta imprimir el número de veces que aparece una letra en la cadena, pero se imprime más de una vez

En el siguiente código, estoy tratando de verificar cuántas veces aparece una letra en una cadena. El problema con el siguiente código es que imprime cada letra más de una vez. Necesita recopilar todas las mismas letras y mostrar la cantidad de veces que ocurre en la cadena y mostrarlo una vez.

 const string = 'mississippi' const letters = [...string] let currentLetter = '' let letterOccurance = [] for(let i = 0; i < letters.length; i++){ let letterFrequency = letters.filter((letter)=>{ return letter === letters[i] }) letterOccurance.push([`${letters[i]}`,letterFrequency.length]) } console.log(letterOccurance)

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Eso es demasiado código solo para obtener la cantidad de veces que aparece una letra en una cadena. Prueba el siguiente código:

 const string = 'mississippi'; let frequency = {}; for (let letter of string) { if (frequency[letter]) { frequency[letter]++; } else { frequency[letter] = 1; } } console.log(frequency);

about 4 years ago · Santiago Trujillo Relatório

0

Siempre está empujando la letra a la matriz, ya sea que exista allí o no:

 letterOccurance.push([`${letters[i]}`,letterFrequency.length])

Podrías verificar si existe primero:

 if (!letterOccurance.find(l => l[0] === letters[i])) { letterOccurance.push([`${letters[i]}`,letterFrequency.length]) }

O incluso sáltatelo por completo si ya lo has visto, ya que la primera vez que encuentras alguna letra ya sabes su cuenta completa:

 for(let i = 0; i < letters.length; i++){ if (letterOccurance.find(l => l[0] === letters[i])) { continue; } // the rest of the loop... }

Honestamente, hay una variedad de formas en las que puedes dar un paso atrás y volver a abordar el problema. Pero para la pregunta sobre por qué las letras se repiten, eso es simplemente porque cada iteración del bucle agrega incondicionalmente la letra a la matriz resultante.

about 4 years ago · Santiago Trujillo Relatório

0

¿Qué tal si escribimos una función de conteo de elementos más genérica y luego colocamos en capas countLetters como una simple aplicación parcial de la función de identidad?

 const countBy = (fn) => ([...xs]) => xs .reduce ((a, x) => {const k = fn (x); a [k] = (a[k] || 0) + 1; return a}, {}) const countLetters = countBy (x => x) console .log (countLetters ('missisippi'))

countBy es bastante genérico. Le pasa una función para convertir sus valores en cadenas y pasa su matriz de elementos a la función que devuelve. Las cadenas son lo suficientemente parecidas a una matriz como para que esto solo funcione para nuestro simple countLetters . Pero también podríamos usarlo para otros cargos, como:

 countBy (x => x .grade) ([{id: 1, grade: 'A'}, {id: 2, grade: 'B'}, {id: 3, grade: 'A'}]) //=> {"A": 2, "B": 1}
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda