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

191
Vistas
Cómo implementar una búsqueda 'contiene' en JavaScript

Estoy creando un cuadro de búsqueda que le permite buscar diferentes empresas. Me gustaría que el cuadro de búsqueda realice una búsqueda "contiene". Por ejemplo, supongamos que quiero buscar la empresa ExxonMobil Oil Corp. Escribir cualquiera de los siguientes debería incluir a la empresa en la lista de resultados (esto no es exhaustivo):

  • aceite
  • cuerpo
  • cuerpo petrolero
  • exxonmobil
  • aceite exxonmobil
  • corporación petrolera exxonmobil

Las palabras no tienen que estar completas, solo que sean claras. La frase 'oil co', por ejemplo, aún debería generar un resultado.

Sin embargo, al escribir 'exxonmobil corp', no aparecerá la empresa como resultado, ya que 'corp' no sigue inmediatamente a 'exxonmobil' en el nombre de la empresa.

¿Existe un método de referencia para implementar este tipo de búsqueda, teniendo en cuenta la eficiencia del tiempo? En mi caso, puede haber miles de empresas para buscar. Y me gustaría poder mostrar la lista de resultados sobre la marcha mientras el usuario escribe en el cuadro de búsqueda.

Soy consciente de la estructura de datos trie, pero por lo que he leído, parece funcionar mejor para las búsquedas 'comienza con'. Por lo tanto, no coincidiría con búsquedas como 'oil corp', 'oil' o 'corp' con ExxonMobil Oil Corp. Tal vez haya una manera de modificar el trie para que haga lo que quiero, pero no estoy seguro de si ese es el mejor manera de ir.

Gracias por las respuestas. Algunos de ustedes sugirieron buscar en String.prototype.includes() . Lo probé y parece funcionar bien sin problemas de rendimiento.

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

0

100 empresas es rápido.

 const companies = [ "Arcade Flower Shop", "Madam Malkin's Robes for All Occasions", "Victoria's Circuit", "33¢ Store", "El Banco Corrupto", "Silver Shamrock", "Stay Puft Corporation", "Wonka Industries", "Blue Moon Detective Agency", "The Foundation", "Macmillan Toys", "The Reef", "Merrick BioTech", "The Peach Pit", "The Korova Milkbar", "Paper Street Soap Company", "Mel's Diner", "Dunder Miflin", "The Everything Store", "Rodbell's", "Rex Kwan Do", "The Fairly Oddparents", "Vitameatavegamin", "Bushwood Country Club", "Consumer Recreation Services", "The Rusty Anchor", "IPS (International Parcel Services)", "Pendant Publishing", "Lacuna Inc.", "HAL Labs", "Life Extension", "Rekall", "Bluehound Bus Line", "Atlantic American Airlines", "KACL", "Flingers", "Burrito Explosion", "Fatso's", "The Max", "McDowell's", "Bada Bing", "Wu-Tang Financial", "Wally World", "The Dharma Initiative", "The Leftorium", "Edna's Edibles", "Daily Planet", "21 Jump Street", "The Enterprise", "Powell Family", "Central Perk", "Night Court", "Arnold's Drive-In", "WKRP", "Moe's Tavern", "Lomax Industries", "Hudsucker Industries", "Los Pollos Hermanos", "Chubby's", "Mugatu Industries", "The Daily Bugle", "Globex Corporation", "Entertainment 720", "Soylent Corporation", "SS Minnow", "TGS with Tracy Jordan", "Grace Adler Designs", "Pierce & Pierce", "Wayne Enterprises", "Cheers", "Goliath National Bank", "Pricemart", "Career Transitions Corporation", "Bluth's Original Frozen Banana", "Livingston", "Luke's Diner", "Adventureland", "Buy-N-Large", "Average Joe's Gym", "Duff Beer", "Michael Scott Paper Company", "Brawndo", "Fisher & Sons", "Mitch and Murray", "Multi National United", "Oscorp", "Pizza Planet", "Momcorp", "Ewing Oil", "Prestige Worldwide", "Tyrell Corporation", "Omni Consumer Products", "Monsters Inc.", "Ghostbusters", "Pied Piper", "TelAmeriCorp", "Yakonomo Corporation", "Mega Lo Mart", "Vandelay Industries", "Frosty Palace", "Sterling Cooper Draper Pryce", "MIB", "The Smash Club" ]; const search = document.getElementById("search"); const output = document.getElementById("output"); const filter = (evt) => { const val = evt.target.value; if (val.length < 1) return output.value = ""; output.value = companies.filter(company => company.toLowerCase().includes(val.toLowerCase())).join("\n"); } search.addEventListener("keyup", filter);
 input, textarea { margin-top: 1em; }
 <link href="https://unpkg.com/marx-css/css/marx.min.css" rel="stylesheet" /> <main> <input type="text" id="search" /> <textarea rows=4 id="output"></textarea> </main>

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