- Removes any duplicate query string parameters from the url
- Removes any query string parameters specified within the 2nd argument (optional array)
stripUrlParams('www.codewars.com?a=1&b=2&a=2') // returns 'www.codewars.com?a=1&b=2'
stripUrlParams('www.codewars.com?a=1&b=2&a=2', ['b']) // returns 'www.codewars.com?a=1'
stripUrlParams('www.codewars.com', ['b']) // returns 'www.codewars.com'
www.codewars.com?a=1&b=2&a=3
이런 url 에서 중복된 param 제거 및 배열로 받은 인자 제외 시키기
function stripUrlParams(url, paramsToStrip=[]){
var regex = /([?&]((\w+)=(\w+)))/g;
var result = regex.exec(url);
var tokens = [];
var paramKey = {};
while (result) {
if (!paramKey[result[3]] && !paramsToStrip.some(p=> p==result[3])) {
paramKey[result[3]] = true;
tokens.push(result.slice(2));
}
result = regex.exec(url);
}
var r = /.+\?/g;
var withoutParam = r.exec(url)||url;
return withoutParam + tokens.map(t=>t[0]).join('&');
}
음... 정규식이 장난 아니네...
function stripUrlParams(url, paramsToStrip){
return url.replace(/&?([^?=]+)=.+?/g, function(m, p1, qPos) {
return url.indexOf(p1 + '=') < qPos || (paramsToStrip||[]).indexOf(p1) > -1 ? "": m;
});
}