Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
¿Cómo comparar dos matrices de cadenas, encontrar todas las coincidencias, cuando podría haber una oración?

Este es divertido: ¡estoy construyendo un verificador de blasfemias!

Para los propósitos de este ejercicio, tengamos una serie de palabras prohibidas, así:

const forbiddenWords = ['apples', 'oranges', 'blue carrots', 'mushy green peas'];

Entonces tendré un campo de entrada para que un usuario ingrese algo. Podría ser una combinación infinita de palabras, pero me gustaría encontrar TODAS las instancias de las palabras prohibidas y devolverlas como una matriz. He pensado en esta función, que me acerca mucho:

 const forbiddenWords = ['apples', 'oranges', 'blue carrots', 'mushy green peas']; const userInput = 'Broccoli is my favorite food. I hate oranges and blue carrots'; const checkIfValidInput = () => { // Will return an array that looks like: ['Broccoli', 'is', 'my', 'favorite', ...] const splitWords = userInput.split(" "); const array = []; for (let i in forbiddenWords) { if (splitWords.indexOf(forbiddenWords[i]) !== -1) { array.push(forbiddenWords[i]); } } return array.sort((x, y) => x - y); };

Ejecutar lo anterior hará que el resultado de la matriz sea ['oranges', 'blue', 'carrots'] . ¿Cómo podría construir la función para buscar 'blue carrots' o 'mushy green peas' todo en uno? Me gustaría que la función anterior devuelva: ['oranges', 'blue carrots'] . ¿Pensamientos?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede usar expresiones regulares para esta situación. Esto también le dará la capacidad de coincidir con la insensibilidad a mayúsculas y minúsculas

 const checkIfValidInput = () => { const forbiddenWords = ['apples', 'oranges', 'blue carrots', 'mushy green peas']; const userInput = 'Broccoli is my favorite food. I hate oranges and blue carrots'; const result = forbiddenWords.reduce((acc, words) => { const match = userInput.match(new RegExp(words, ['gi'])) return match ? acc.concat(match) : acc }, []) result.sort() console.log(result) } checkIfValidInput()

Además, array.sort((x, y) => x - y); no es necesario ya que los valores que tiene son cadenas. Puede confiar en array.sort() o si realmente desea ordenar manualmente, pruebe string.localeCompare(string2)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Probablemente sea mejor que cree una expresión regular. De esta manera, puede omitir el siguiente para dividir e ignorar los problemas de mayúsculas

Puedes hacer esto como

 var regexStr = ""; for (let i = 0; i < forbiddenWords.length; i++) { if (i != 0) regexStr += "|"; regexStr+= "(" + forbiddenWords[i] + ")"; } var regex = RegExp.compile(regexStr,"gim"); var matches = userInput.match(regex);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede verificar la oración con cada una de las frases, ya sea que coincida o no, y si lo es, puede devolver la frase y almacenarla en una variable.

Técnicamente, el uso de filter() e include() resolvería la tarea. Déjame saber si ayuda.

 let matched = forbiddenWords.filter(phrase => { if(userInput.includes(phrase)) return phrase; }); return matched;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda