tevez15 Posted April 28, 2015 at 10:53 AM Report Share #582032 Posted April 28, 2015 at 10:53 AM (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 April 28, 2015 at 11:38 AM by apocsantos geshi Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted April 28, 2015 at 11:57 AM Report Share #582040 Posted April 28, 2015 at 11:57 AM não dizes nada sobre o que estás a filtar e como filtrar ... como esperas uma resposta de alguém ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
tevez15 Posted April 28, 2015 at 12:27 PM Author Report Share #582041 Posted April 28, 2015 at 12:27 PM (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 April 29, 2015 at 08:27 AM by tevez15 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now