Como fazer um filtro com múltiplos campos combinados no javascript?

18/08/2022

0


quero fazer um filtro.

CAMPOS: NOME, CATEGORIA, VALOR, DATA, ID

Se a pessoa completar somente NOME, quero que retorne todos os objetos que tenham este NOME.
Mas se a pessoas preencher NOME e VALOR, quero que retorne apenas os objetos que tenham este NOME e este VALOR, ao mesmo tempo.

Pra isso, criei uma regra pra cada possibilidade, diversos "IF", porém, isso é mt chato e demorado.
Tem uma ideia melhor?


Segue o trecho do código de filtro:
 

 function fPesquisar (pesquisaNome, pesquisaCategoria, pesquisaValor, pesquisaIdInterno){
    
    
        var resultadoFiltrado = produtos.filter(item => 
    
            item.nomeOriginal == pesquisaNome && item.categoria == pesquisaCategoria    && item.valor       == pesquisaValor || // NOME + CATEGORIA + VALOR  
            item.nomeOriginal == pesquisaNome && item.categoria    == pesquisaCategoria && pesquisaValor    == ""            || // NOME + CATEGORIA           OOOK
            item.nomeOriginal == pesquisaNome && pesquisaCategoria == ""                && item.valor       == pesquisaValor || // NOME + VALOR               OOOK      
            pesquisaNome      == ""           && item.categoria    == pesquisaCategoria && item.valor       == pesquisaValor || // CATEGORIA + VALOR
            item.nomeOriginal == pesquisaNome && pesquisaCategoria == ""                && pesquisaValor    ==""             || //NOME
            pesquisaNome      == ""           && item.categoria    == pesquisaCategoria && pesquisaValor    == ""            || // CATEGORIA  
            pesquisaNome      == ""           && pesquisaCategoria    == ""             && item.valor       == pesquisaValor || // VALOR 
            pesquisaNome      == ""           && pesquisaCategoria    == ""             && pesquisaValor    == ""            && item.idInterno  == pesquisaIdInterno || // VALOR
            pesquisaNome      == ""           && pesquisaCategoria    == ""             && pesquisaValor    == ""            && item.pesquisaIdInterno == ""     // VAZIO 
                                                                       
    
        )
    
           console.log(resultadoFiltrado);
    
          var exibeBuscaEspecificaFiltro = resultadoFiltrado.map(function(item){
            
            return item.nome + separador + item.categoria + separador + item.valor + separador + item.idInterno;
    
    
       })
       document.getElementById("resultadoExtrato").innerHTML = exibeBuscaEspecificaFiltro;
        }
Rôney Fischer

Rôney Fischer

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar