Skip to content

Instantly share code, notes, and snippets.

@JoelLisenby
Last active May 15, 2020 00:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoelLisenby/d47ced10eabfd83b03c3745e215f098e to your computer and use it in GitHub Desktop.
Save JoelLisenby/d47ced10eabfd83b03c3745e215f098e to your computer and use it in GitHub Desktop.
Add/update or Remove URL parameters from the provided URL
/* getUrlWithParams()
* Add/update or remove url parameters from the provided url.
* Example: getUrlWithParams({'tab':tab_name},['remove']);
*/
var getUrlWithParams = function(url, add_update, remove = []) {
var url = new URL(url);
var splita = url.search.substr(1).split('&');
var params = {};
var merged = {};
for(var i in splita) {
var splitb = splita[i].split('=');
params[splitb[0]] = splitb[1];
}
for(var i in params) {
if(Array.isArray(remove) && remove.indexOf(i) == -1) {
merged[i] = params[i];
}
}
for(var i in add_update) {
merged[i] = add_update[i];
}
output = url.origin + url.pathname + (merged.length > 0 ? '?' : '');
var cnt = 0;
for(var i in merged) {
if(i != '') {
output += (cnt == 0 ? '?' : '&') + i +'='+ merged[i];
cnt++;
}
}
return output + url.hash;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment