Get Query String Values in Vanilla JavaScript
The window.location.search
property
contains the raw query string. For example, if you open http://localhost:5000/?answer=42
,
then window.location.search
will equal '?answer=42'
.
You can parse the query string using the URLSearchParams
class:
const querystring = '?answer=42';
const params = new URLSearchParams(querystring);
params.get('answer'); // '42'
Instances of URLSearchParams
are similar to JavaScript maps. In order to
get all keys in the search string, you can use the keys()
function or the entries()
function. Keep in
mind these functions return JavaScript iterators, not arrays, so you need to
use Array.from()
to convert them.
const querystring = '?answer=42&question=unknown';
const params = new URLSearchParams(querystring);
Array.from(params.keys()); // ['answer', 'question']
Array.from(params.entries()); // [['answer', '42'], ['question', 'unknown']]
Without URLSearchParams
The URLSearchParams
class enjoys reasonable browser support and works
in Node.js. The big caveat is that URLSearchParams
is not supported in Internet Explorer.
The URLSearchParams
class handles a lot of edge cases for you, but, in
many cases, you can get away with the below simple function for parsing
the query string.
function parse(qs) {
return qs.
replace(/^\?/, '').
split('&').
map(str => str.split('=').map(v => decodeURIComponent(v)));
}
parse('?answer=42&question=unknown'); // [['answer', '42'], ['question', 'unknown']]