Ir para o conteúdo
tevez15

jQuery - Filtrar array com combinações

Mensagens Recomendadas

tevez15    0
tevez15

Bom dia caros amigos,

Trago uma dúvida que talvez me possam ajudar. Tenho um limite de entrega de um projecto muito apertada, e o meu problema neste momento, é que tenho uma lista de uma API em JSON, e preciso de a filtrar.

Neste momento tenho 9 filtros, e da maneira como estou a fazer tenho de fazer á mão combinações entre eles, o que para além de consumir muito tempo, não é muito dinâmico e o código fica enorme.

O que tenho neste momento é algum semelhante com isto:

var searchReturn = $.grep(myFlights, function(myFlights) {
//if's "infinitos", com todas as possibilidades que possam existir entre os 9 filtros, deste individual, a passar por combinações de 2,3.....
});

Sabem de uma outra forma que me possa ajudar a tornar tudo isto mais dinamico? obrigado.

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
tevez15    0
tevez15

O array que vem da API dá me valores como por exemplo, cidade de partida, cidade de origem, preço, tempo de voo, etc etc.

Tenho filtros por preço, tempo de voo, hora de partida e de chegada... é o que estou a usar.

PS: ALterei o meu codigo, neste momento o que estou a fazer, é criar um array dos filtros da pesquisa (nome e valor) e cruzar com o array dos resultados da API.

Penso que desta forma fique mais dinamico.

PS2: Para concluir o topico, ja consegui fazer o que procurava, fica um exemplo:

predicates = [
      function checkAirline(PRODUCT)
      {
           if( typeof airline != "undefined"){
           return PRODUCT.COLOR == COLOR; 
       }else{
       return true; //Pode variar, neste meu caso é exatamente o que preciso
       }
      },
      function checkPrice(PRODUCT)
      {
          if( typeof stops != "undefined"){
           return PRODUCT.COLOR <=  COLOR; 
       }else{
       return true; //Pode variar, neste meu caso é exatamente o que preciso
       }
      },
  ],
  filteredProducts;

  filteredProducts = $.grep(PRODUCT, function (element, index)
  {
      for (var i=0; i<predicates.length; i++)
      {
          if (!predicates[i](element)) return false;
      }

      return true;
  });

Editado por tevez15

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.