Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sem regex, a busca será sempre pelo primeiro caractere

Opa pessoal! Tudo bem?

Usando a expressão regular me parece ser mais eficiente, porque ele faz o teste sobre toda a string. Sem o regex o teste é feito iniciando pelo primeiro caractere.

Exemplo:

Valor digitado: "paulo"

Resultado da busca com regex:

Paulo

Pedro Paulo

Resultado sem regex:

Paulo

Posso estar errado, gostaria que me confirmassem por favor.

Segue o código:

var filter = document.querySelector('#filtrar-paciente');

filter.addEventListener('input', function () {
    var patients = document.querySelectorAll('.paciente');
    patients.forEach(patient => {
        var name = patient.querySelector('.info-nome').textContent;
        var compare = name.substring(0, this.value.length);
        var thisMin = this.value.toLowerCase(); 
        var compareMin = compare.toLowerCase();

        if (!(thisMin == compareMin)) {
            patient.classList.add('invisivel');
        } else {
            patient.classList.remove('invisivel');
        }
    });
});
2 respostas
solução!

Oi, Helderson, tudo bem?

Qual o código que você testou com regex em que obteve esse resultado? O código explicado pelo instrutor tem o resultado em que o usuário digitar P e aparecer os nomes que começar com a letra P. Assim, o mesmo para quando digitar mais letras, irá afunilar a busca até ser encontrado o nome na lista. Segue o print: https://imgur.com/a/RkprOWC

Opa Laís! Ficou certinho aqui. Consegui entender a lógica da coisa, muito obrigado!