Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

194
Views
Determinar qué cadenas contienen los siguientes caracteres en una lista

Estoy tratando de escribir un código javascript que me permita extraer qué palabras (dadas como una lista) contienen 1 o más caracteres en una lista dada de palabras.

 function filterWords(words, letters) { var myArrayOfLetters = Array.from(letters) var output; for(var i = 0; i<myArrayOfLetters.length; ++i) { output = words.filter(word => word.includes(myArrayOfLetters[i])) } return output; }

Este es el código que tengo hasta ahora pero no funciona.

Este es un ejemplo de la entrada y la salida requerida:

 words = ['the','dog','got','a','bone'] letters = 'ae' output = ['the','a','bone']

Como puede ver, la salida contiene todas las palabras que tienen 'a' o 'e' en ellas o ambas.

¿Cómo haría para resolver este problema?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Estás en el camino correcto, pero tienes tus bucles al revés. Desea usar el filter como bucle externo y el bucle sobre la matriz de letras como bucle interno , ya que desea saber si una palabra tiene alguna de esas letras. El ciclo interno puede ser una llamada a some método en lugar de un ciclo explícito:

 function filterWords(words, letters) { const myArrayOfLetters = Array.from(letters); const output = words.filter((word) => myArrayOfLetters.some((letter) => word.includes(letter)) ); return output; }

some devuelve true si la devolución de llamada alguna vez devuelve true (o cualquier valor verdadero), o false si la devolución de llamada nunca lo hace.

Ejemplo en vivo:

 function filterWords(words, letters) { const myArrayOfLetters = Array.from(letters); const output = words.filter((word) => myArrayOfLetters.some((letter) => word.includes(letter))); return output; } const words = ["the", "dog", "got", "a", "bone"]; const letters = "ae"; console.log(filterWords(words, letters));

Aquí hay un ejemplo con una palabra que tiene tanto a como e ; tenga en cuenta que solo se incluye una vez:

 function filterWords(words, letters) { const myArrayOfLetters = Array.from(letters); const output = words.filter((word) => myArrayOfLetters.some((letter) => word.includes(letter))); return output; } const words = ["the", "dog", "got", "a", "really", "nice", "bone"]; const letters = "ae"; console.log(filterWords(words, letters));

about 4 years ago · Santiago Trujillo Report

0

Simplemente puede lograrlo con la ayuda de Array.filter() junto con el método Array.some() .

Demostración en vivo :

 let words = ['the', 'dog', 'got', 'a', 'bone']; const letters = 'ae'; const splittedLetters = letters.split(''); const res = words.filter(item => { return splittedLetters.some(word => item.includes(word)); }); console.log(res);

about 4 years ago · Santiago Trujillo Report

0

let words = ['javascript', 'java', 'ruby', 'python', 'php']; let filterWords =(words, chars) => { return words.filter(word => word.split('').some(char => chars.includes(char))); } console.log(filterWords(words, 'pa')); //['JavaScript', 'Java', 'Python', 'PHP']
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!