Function to convert URL hash parameters into object (key value pairs)
You can use this function:
function parseParms(str) {
var pieces = str.split("&"), data = {}, i, parts;
// process each query pair
for (i = 0; i < pieces.length; i++) {
parts = pieces[i].split("=");
if (parts.length < 2) {
parts.push("");
}
data[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
}
return data;
}
This is taken from the .parseParms()
method of a larger set of functionality on github I wrote for parsing a URL into all its pieces.
Input is a string in the form of:
"aaa=1&bbb=99&name=Bob"
and it will return an object like this:
{aaa: 1, bbb: 99, name: "Bob"}
So, if you have other things in the string besides just the parameters above, then you would need to remove those first before calling this function.
Working demo:
function parseParms(str) {
var pieces = str.split("&"), data = {}, i, parts;
// process each query pair
for (i = 0; i < pieces.length; i++) {
parts = pieces[i].split("=");
if (parts.length < 2) {
parts.push("");
}
data[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
}
return data;
}
console.log(parseParms("aaa=1&bbb=99&name=Bob"));
the foreEach
method on arrays makes it even shorter:
const result = {};
hash.split('&').forEach(item => {
result[item.split('=')[0]] = decodeURIComponent(item.split('=')[1]);
});