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');
}
});
});