Jump to content

Recommended Posts

Posted (edited)

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.

Edited by apocsantos
geshi
Posted (edited)

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;
  });
Edited by tevez15

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.