JSFiddle - React, Tailwind, and code Playground

by Joshua

JavaScript

function getQueryParams(inp, out, parts, part, level, de){
  level=out={},
  parts=[].slice.call(inp.replace(/\+/g,' ').match(/[^\[\]=&]+|&|=/g)),
  de=decodeURIComponent;
  while(part=parts.shift())
    part=='&'?
    	level=out:
    		parts[0]=='='?
      		(parts.shift(),level[de(part)]=de(parts.shift())):
      			level=level[de(part)]={};
  return out;
}

function getQueryParams(a,b,c,d,e,f){e=b={},c=[].slice.call(a.replace(/\+/g,' ').match(/[^\[\]=&]+|&|=/g)),f=decodeURIComponent;while(c.s=c.shift,d=c.s())d=='&'?e=b:c[0]=='='?(c.s(),e[f(d)]=f(c.s())):e=e[f(d)]={};return b}

var params = getQueryParams('key1&key2=value&key3[A+%2B+B]=A+%2B+B');
console.log(JSON.stringify(params)); // {"key1":{},"key2":"value","key3":{"A + B":"A + B"}}