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

181
Vistas
Busque alfabetos en una matriz de cadenas de manera eficiente usando javascript

Tengo una variedad de productos como se muestra a continuación.

 const totalProducts = ['washing machine', 'sewing machine', 'refrigerator', 'desk']

Si un usuario escribe cualquier palabra en el campo de entrada, quiero obtener todos los productos coincidentes de la matriz. por ejemplo, si el usuario escribe 'ma', esperaría que el resultado contuviera ['washing machine', 'sewing machine']

Para lograr el resultado deseado, hago este código a continuación

 var result = totalProducts.filter((product) => product.includes('ma'));

Sé que este código anterior funciona para obtener el resultado deseado. pero supongamos que la matriz totalProducts tiene una longitud de más de 1000. ¿Mi método anterior dará el resultado de manera eficiente como debería?

¿O hay una mejor manera de buscar y mejorar el rendimiento de mi código?

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Dado que .filter() e .includes() son ambos de tiempo constante (o(n)), la complejidad de tiempo total es O(2n).

La única forma que se me ocurre para mejorar el rendimiento del código sería almacenar en caché (o almacenar) la matriz de resultados filtrados y luego filtrar aún más esa matriz a menos que el usuario retroceda.

about 4 years ago · Santiago Gelvez Denunciar

0

a veces, cuando sus datos son demasiado grandes, se quedan sin posibilidades de obtener métodos más eficientes, lo que sugiero es filtrar sus datos en su backend y agregar una rueda como retroalimentación visual para el usuario. también se debe usar el rebote de su oyente onKeyDown para evitar inundar su servidor con solicitudes http para cada pulsación de tecla.

about 4 years ago · Santiago Gelvez Denunciar

0

Es un intercambio entre el espacio y el tiempo. De hecho, existe un enfoque más rápido, pero la matriz debe procesarse de antemano para crear un índice, que ocupa memoria. Si crea un árbol de sufijos con un índice de cada cadena en una hoja, simplemente puede encontrar el subárbol apropiado y enumerar todos los índices que contiene.

Permítanme usar un ejemplo más pequeño, por el tamaño de esta respuesta. Supongamos que tiene "pit,spit,pot,spot". Un árbol de sufijos de esas cadenas es

árbol de sufijos

(Gracias a este sitio por la visualización). Si desea encontrar las cadenas que contienen "po", comenzando desde la raíz, tome el nodo "p", luego el nodo "o" (aquí colapsado en "ot$" nodo). El subárbol debajo contiene enlaces a las cadenas #3 y #4 (este sitio las indexa desde 1), es decir, "pot" y "spot". (Este sitio también señala que la subcadena comienza en la posición 1 para "pot" y en la posición 2 para "spot", pero esta información no es necesaria para su propósito).

Como puede ver, el proceso de encontrar las cadenas coincidentes es muy rápido; pero el árbol de sufijos requerido sería mucho más grande que la lista original. Si desea restringir la búsqueda para que solo coincida con el inicio de las palabras (por ejemplo, "ma" coincidiría con "lavadora", pero no con "chi"), puede reducir el tamaño del árbol.

Sin embargo, las ganancias serían, para la mayoría de los propósitos, insignificantes para una sola búsqueda; esto probablemente solo sea necesario si necesita realizar la búsqueda repetidamente, rápido. Para una matriz de miles de elementos y una sola búsqueda de vez en cuando, su enfoque original es casi seguro lo suficientemente bueno. El enfoque del árbol de sufijos es más rápido, pero para el caso de uso en el OP, una exageración y un caso de optimización prematura.

about 4 years ago · Santiago Gelvez 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