Um pouco sobre $.map()
Quem já começou a testar as novas features do jQuery 1.6 levanta a mão… _o/
Venho apresentar algumas das minhas impressões do método $.map, que foi bem incrementada na nova versão. Para quem ainda não conhece, o método permite manipularmos arrays ou objetos de maneira bem prática.
Quem já precisou manipular esse tipo de dados, sabe o trabalho que dá. Exemplificarei como a nossa vida ficou mais fácil se soubermos utilizar bem o $.map().
Em primeiro lugar, algo bem simples para que possamos entender bem o método:
$.map( [0,1,2], function(n){
return n + 10;
});
// Resultado:
// [10,11,12]
A manipulação é completa, inclusive podemos também retirar algum valor da array, caso necessário.
$.map( [0,10, 20, 30, 40, 50], function(n){
if(n <= 30) {
return n;
}else{
return null; // Não é necessário, apenas para facilitar a visualização lógica.
}
});
// Resultado:
// [0, 10, 20, 30]
Vamos para um exemplo prático. Estou querendo passar apenas os dados que não são vazios de um formulário.
O que precisávamos fazer, sem utilizar o jQuery.map():
var params = form.serializeArray()
checkedParams = new Array();
for(var x = 0; x < params.length; x++) {
var index = params[x];
if(index) {
checkedParams.push(index);
}
}
Agora ao exemplo bem mais elegante:
var params = form.serializeArray();
params = jQuery.map(params, function(value, index){
return (value) ? value : null;
});
Sim, mas qual a diferença entre o $.map() e o $.each() ?
O each() serve apenas para varrer o objeto ou array, enquanto o map permite um retorno e manipulação do que foi varrido.
$.map()
$.map([1,2,3,4,5], function(value, index){
return false;
});
// Resultado:
// [false, false, false, false, false]
$.each()
$.each([1,2,3,4,5], function(index, value){
console.log(index);
return false;
});
// Resultado:
// 1
// Ele irá imprimir apenas o primeiro valor e irá encerrar
// o laço por causa do return false.
Espero que tenham entendido mais um pouco sobre o novo método. Caso ainda tenha alguma dúvida, pergunta aí embaixo
$.each, $.map, jquery, jquery 1.6, novidades

Comentários