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

158
Views
¿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 answers
Answer question

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 Report

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 Report

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 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!