The problem
Need to parse URL query strings into JavaScript objects
The solution
function parseQueryString(queryString) {
if (!queryString) return {};
// Remove leading ? or #
queryString = queryString.replace(/^[?#]/, '');
return queryString.split('&').reduce((params, param) => {
const [key, value] = param.split('=');
if (key) {
params[decodeURIComponent(key)] = value ? decodeURIComponent(value) : true;
}
return params;
}, {});
}
// Alternative: Parse from URL
function getQueryParams(url = window.location.search) {
return parseQueryString(url);
}Parameters
queryStringstringQuery string to parse
Put it to work
const query = parseQueryString('?name=John&age=30&admin');
console.log(query);
// { name: "John", age: "30", admin: true }
// Parse current URL
const currentQuery = getQueryParams();
console.log(currentQuery);
// Build query string from object
const params = { search: 'test', page: 2 };
const queryStr = new URLSearchParams(params).toString();
console.log(queryStr); // "search=test&page=2"