Advertisement
vit134

Flatten object

Dec 24th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Развернуть объекта в плоский. На входе объект, сепаратор и глубина развертывания
  3. */
  4. const data = {
  5.     foo: 1,
  6.     bar: {
  7.         bla: 2,
  8.         coo: 3,
  9.         doo: {
  10.             soo: 4,
  11.             aaa: {
  12.                 sss: {
  13.                     s: 1
  14.                 }
  15.             }
  16.         }
  17.     },
  18.     bbbb: [1,2,3]
  19. }
  20.  
  21. const flattenObject = function(ob, sep, depth) {
  22.     var result = {};
  23.     if (!sep) sep = '.';
  24.  
  25.     for (var i in ob) {
  26.         let item = ob[i]
  27.         let isObject = typeof ob[i] == 'object';
  28.         let isArray = Array.isArray(item);
  29.        
  30.         if (isObject && !isArray && depth !== 0) {
  31.             if (depth) depth--;
  32.            
  33.             var flatObject = flattenObject(item, sep, depth);
  34.             for (var x in flatObject) {
  35.                 result[i + sep + x] = flatObject[x];
  36.             }
  37.         } else {
  38.             result[i] = item;
  39.         }
  40.     }
  41.    
  42.     return result;
  43. };
  44.  
  45. let a = flattenObject(data, '.', 3)
  46. console.log(a)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement