Fórum Como fazer um filtro com múltiplos campos combinados no javascript? #618585
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:
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)