JSFiddle - React, Tailwind, and code Playground
by Aubrey Taylor
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
JavaScript
var queryString = "roles={F3757192-8128-4839-B57E-E6FC7260A3E5}&cerp_categories[]=&cerp_categories[]={EE20FC7D-1A43-4B28-B27E-5C814CA82178}&cerp_categories[]={57F03F6E-1271-4159-B5C0-4E84563C2951}&cerp_categories[]={5EAE8377-5F8F-45B2-973A-56E6CD4897F3}&sortBy=date_descending"
var querySplit = queryString.split("&");
console.log(querySplit);
function splitParams(param) {
return [param.split("=")[0], param.split("=")[1]]
}
function paramsToDict(memo, pair) {
var key = pair[0];
var value = pair[1] || "";
var isArray = key.indexOf("[]") > 0;
if(isArray) {
key = key.replace("[]", "");
if(_.isUndefined(memo[key])) memo[key] = [];
memo[key].push(value);
}else {
memo[key] = value;
}
return memo;
}
var memo = {};
var result = _.chain(querySplit)
.map(splitParams)
.reduce(paramsToDict, memo)
.value()
console.log(result);
var _mem = {};
_.reduce({"foo": "bar"}, function(){console.log(arguments)}, _mem);