{"ScriptPreparationCode":"var search = \u0022?test=test2\u0026test3=test4\u0026test5=test6\u0022;\r\nvar regex = /[\u0026\\?]([^=]\u002B)=([^\u0026]\u002B)/g;","TestCases":[{"Name":"Double splitting","Code":"var params = {};\r\nvar query = search.substring(1);\r\nvar paramStrs = query.split(\u0027\u0026\u0027);\r\nfor (paramStr of paramStrs) {\r\n var pair = paramStr.split(\u0027=\u0027);\r\n params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n}","IsDeferred":false},{"Name":"Regex mapping","Code":"var params = Object.fromEntries(new Map(Array.from(search.matchAll(regex)).map(match =\u003E [decodeURIComponent(match[1]), decodeURIComponent(match[2])])));","IsDeferred":false},{"Name":"Regex looping","Code":"var params = {};\r\nwhile((param = regex.exec(search)) !== null) {\r\n params[decodeURIComponent(param[1])] = decodeURIComponent(param[2]);\r\n}","IsDeferred":false},{"Name":"Regex iterator","Code":"var params = {};\r\nvar regexMatches = search.matchAll(regex);\r\nwhile(!(current = regexMatches.next()).done) {\r\n\tvar param = current.value;\r\n params[decodeURIComponent(param[1])] = decodeURIComponent(param[2]);\r\n}","IsDeferred":false}]}