John Resig propone una función para convertir una cadena como
"foo=1&foo=2&foo=3&blah=a&blah=b"
en otra que así:
"foo=1,2,3&blah=a,b"
.
function compress(data){
var q = {}, ret = "";
data.replace(/([^=&]+)=([^&]*)/g, function(m, key, value){
q[key] = (q[key] ? q[key] + "," : "") + value;
});
for ( var key in q )
ret = (ret ? ret + "&" : "") + key + "=" + q[key];
return ret;
Resulta muy interesante el uso de la función
replace
con una función que recibe las partes clave y valor y cuyo resultado se reemplazará en la cadena a buscar. También es interesante la técnica para comprobar si se debe concatenar una pieza más a una cadena separada por una coma:
ret = (ret ? ret + "&" : "") + value;
No hay comentarios:
Publicar un comentario