Cambiar la cadena de parames de URL usando JavaScript
-
12-12-2019 - |
Pregunta
Quiero eliminar algunos params de una cadena de URL:
Por ejemplo:
Tengo una cuerda como esta:
var url = '/browse/102?color=red&type=car&rpp=10&ajax=1&change=1';
y una matriz así:
var ignore = new Array("change","ajax");
resultado :
/browse/102?color=red&type=car&rpp=10
¿Cuál es la forma más corta y rápida de lograr esto?
Solución
¿Qué pasa con un regeo?Aquí hay una función de ejemplo:
var url = '/browse/102?color=red&type=car&rpp=10&a=mode&ajax=1&change=1&mode&test';
var ignore = new Array("change","ajax", "mode", "test");
alert(removeParams(url, ignore));
function removeParams(address, params)
{
for (var i = 0; i < params.length; i++)
{
var reg = new RegExp("([\&\?]+)(" + params[i] + "(=[^&]+)?&?)", "g")
address = address.replace(reg, function($0, $1) { return $1; });
}
return address.replace(/[&?]$/, "");
}
Editar: Movido a una función separada como Michal B. Lo hizo.
Otros consejos
AQUÍ JSFiddle Ejemplo de una función que hace eso: http://jsfiddle.net/angsj/1/
PD.Utilicé el Regex de Just_mad, ya que el mío era un poco más feo;)
Aquí hay una utilidad simple que uso en mi aplicación para jugar con URL. http://jsfiddle.net/gwb2c/
Fácil de usar:
var url_parser = new URLParser('/browse/102?color=red&type=car&rpp=10&ajax=1&change=1');
alert(url_parser.toString());
// result = "/browse/102?color=red&type=car&rpp=10&ajax=1&change=1"
url_parser.removeParams(["color", "type"]);
alert(url_parser.toString());
// result = "/browse/102?rpp=10&ajax=1&change=1"
url_parser.addParams({color:"green", test : 1});
alert(url_parser.toString());
// result = "/browse/102?rpp=10&ajax=1&change=1&color=green&test=1"