@hilemangroup/bp-frontend
Version:
Common shared frontend utilities for boilerplate projects
61 lines (52 loc) • 1.72 kB
JavaScript
/*!
* getUrlParams.js
* https://www.sitepoint.com/get-url-parameters-with-javascript/
*/
function getUrlParams(url) {
var queryString = (url) ?
url.split('?')[1] :
window.location.search.slice(1);
var result = {};
var params, param, paramNum, paramName, paramValue;
var i;
if (queryString) {
queryString = queryString.split('#')[0];
params = queryString.split('&');
for (i = 0; i < params.length; i++) {
// separate the keys and the values
param = params[i].split('=');
// in case params look like: list[]=thing1&list[]=thing2
paramNum = undefined;
paramName = param[0].replace(/\[\d*\]/, function (v) {
paramNum = v.slice(1, -1);
return '';
});
paramValue = (typeof param[1] === 'undefined')
? true
: decodeURIComponent(param[1]);
paramName = paramName.toLowerCase();
// paramValue = paramValue.toLowerCase();
// if parameter name already exists
if (result[paramName]) {
if (typeof result[paramName] === 'string') {
// convert value to array (if still string)
result[paramName] = [result[paramName]];
}
if (typeof paramNum === 'undefined') {
// if no array index number specified...
// put the value on the end of the array
result[paramName].push(paramValue);
} else {
// if array index number specified...
// put the value at that index number
result[paramName][paramNum] = paramValue;
}
} else {
// if param name doesn't exist yet, set it
result[paramName] = paramValue;
}
}
}
return result;
}
export default getUrlParams;