Advertisement
Guest User

Untitled

a guest
May 21st, 2018
96
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.  
  22. function put(obj, keyParts, value) {
  23.   const key = keyParts.shift();
  24.   if (keyParts.length === 0) {
  25.     obj[key] = value;
  26.   } else {
  27.     obj[key] = obj[key] || {};
  28.     put(obj[key], keyParts, value);
  29.   }
  30. }
  31.  
  32. function putAll(obj, query) {
  33.   Object.keys(query).forEach((key) =>
  34.     put(obj, key.split('.'), query[key])
  35.   );
  36.   return obj;
  37. }
  38.  
  39. const input = "db.host=&db.user=root&db.pass=1234";
  40.  
  41. const query = parseQuery(input);
  42. // query = { 'db.host': '', 'db.user': 'root', 'db.pass': '1234' }
  43.  
  44. const cleanQuery = cleanupQuery(query);
  45. // cleanQuery = { 'db.user': 'root', 'db.pass': '1234' }
  46.  
  47. const result = putAll({}, cleanQuery);
  48. // result = { db: { user: 'root', pass: '1234' } }
  49.  
  50. console.log(result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement