Guest User

Untitled

a guest
May 21st, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function parseQuery(queryString) {
  2.   var query = {};
  3.   var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
  4.   for (var i = 0; i < pairs.length; i++) {
  5.     var pair = pairs[i].split('=');
  6.     query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
  7.   }
  8.   return query;
  9. }
  10.  
  11. function cleanupQuery(query) {
  12.   const cleanQuery = {};
  13.   Object.keys(query).forEach((key) => {
  14.     if (query[key]) {
  15.       cleanQuery[key] = query[key];
  16.     }
  17.   });
  18.   return cleanQuery;
  19. }
  20.  
  21. function put(obj, keyParts, value) {
  22.   const key = keyParts.shift();
  23.   if (keyParts.length === 0) {
  24.     obj[key] = value;
  25.   } else {
  26.     obj[key] = obj[key] || {};
  27.     put(obj[key], keyParts, value);
  28.   }
  29. }
  30.  
  31. function putAll(obj, query) {
  32.   Object.keys(query).forEach((key) =>
  33.     put(obj, key.split('.'), query[key])
  34.   );
  35.   return obj;
  36. }
  37.  
  38. const input = "db.host=&db.user=root&db.pass=1234";
  39.  
  40. const query = parseQuery(input);
  41. // query = { 'db.host': '', 'db.user': 'root', 'db.pass': '1234' }
  42.  
  43. const cleanQuery = cleanupQuery(query);
  44. // cleanQuery = { 'db.user': 'root', 'db.pass': '1234' }
  45.  
  46. const result = putAll({}, cleanQuery);
  47. // result = { db: { user: 'root', pass: '1234' } }
  48.  
  49. console.log(result);
Add Comment
Please, Sign In to add comment