JSFiddle - React, Tailwind, and code Playground

by Nayana Das

JavaScript

function convertQueryToMap(query) {
  var objs = query.split('&');
    
    var obj = {};
    objs.forEach(function(o) {
        o = o.split('=');
        obj[o[0]] = decodeURIComponent(o[1] || '');
    });
  
    for (var str in obj) {
            if (str.indexOf(".") !== -1)
            {
                //parseDotNotation(key, obj[key], obj);
                var currentObj = obj,
                keys = str.split("."),
                i, l = Math.max(1, keys.length - 1),
                key;

              for (i = 0; i < l; ++i) {
                  key = keys[i];
                  currentObj[key] = currentObj[key] || {};
                  currentObj = currentObj[key];
              }
        
              currentObj[keys[i]] = obj[str];
              delete obj[str];
            }            
      }
     
    return JSON.parse(JSON.stringify(obj));
}
  
  console.log(JSON.stringify(convertQueryToMap("user.name.firstname=Bob&user.name.lastname=Smith&user.favoritecolor=Light%20Blue")));