En mi aplicación, implementé la búsqueda local usando expresiones regulares, tengo un problema, no pude encontrar la solución incluso después de buscar mucho, como puede ver, tengo una matriz de words , que filtro según la condición, quiero implementar algo así:
si el usuario escribe
eleen el cuadro de búsqueda, quiero obtener['electric', 'elektric'], lo mismo debería suceder si el usuario escribericen el resultado del campo de entrada:['electric', 'elektric'], pero en caso de que el el usuario ingresa el nombre exacto, por ejemplo, el resultadoelectricdebe ser:['electric']Por último, si la entrada serácooling, el resultado debe ser['engine cooling']
Como puede ver, Mi objetivo es buscar en el sistema la palabra exacta o las letras exactas o la opción lógica más cercana. Tomaré cualquier consejo, gracias
let words = ['electric', 'elektric', 'engine cooling'] function bestMatch(event){ let match = words.filter((e) => new RegExp(`^${event.value}`,"ig").test(e)); console.log(match) } <input type="text" placeholder="best match" onchange="bestMatch(this)" />Agregue .* antes y después para que la expresión regular funcione, de modo que la posición en Word no importe, aunque la expresión regular no es necesaria según sus requisitos. En su lugar, puede usar includes . Finalmente, onkeyup podría ser mejor/más rápido para obtener resultados
Con expresiones regulares:
let words = ['electric', 'elektric', 'engine cooling'] function bestMatch(event){ let match = words.filter((e) => new RegExp(`^.*${event.value}.*`,"ig").test(e)); console.log(match) } <input type="text" placeholder="best match" onchange="bestMatch(this)" />onkeyup ): let words = ['electric', 'elektric', 'engine cooling'] function bestMatch(event){ let match = words.filter((e) => e.includes(event.value.toLowerCase())) console.log(match) } <input type="text" placeholder="best match" onkeyup="bestMatch(this)" />