0

A similar question is probably already asked before but I did not find it. I got strings like this :

  • grand-parent/parent/child.
  • grand-parent/parent/child2.
  • grand-parent2/parent2/child3.

I would like to populate in jQuery a multidimensionnal object to get this:

 var params = { 
      'grand-parent' : {
           'parent' : {
               'child' :  value,
               'child2' : value
            }
       },
       'grand-parent2' : {
           'parent2' : {
               'child3' :  value
            }
       }
  };

My wrong code

var params = {}
// ... in loop 
var parentIds = currentObject.attr('data-parent-ids').split("/");
params = parentIds.map(function(e) {
                return e;
            });

//Output  [ 'grand-parent', 'parent' ] instead of { 'grand-parent' : { 'parent' : null } }
J.BizMai
  • 2,621
  • 3
  • 25
  • 49

1 Answers1

0

Finally, I found my answer here.

var createNestedObject = (params, path, val) => {
        const keys = path.split('/');
        const lastKey = keys.pop();
        const lastObj = keys.reduce((params, key) =>
                params[key] = params[key] || {},
            params);
        lastObj[lastKey] = val;
    };

var currentValue = currentObject.val();
// data-parent-ids === 'grand-parent/parent'
var parentPath = currentObject.attr('data-parent-ids');
// car add more
// parentPath = parentPath + "/" + currentObject.attr('data-index');
// parentPath =  parentPath + "/" + currentObject.attr('data-id');
createNestedObject( params, parentPath, currentValue );
J.BizMai
  • 2,621
  • 3
  • 25
  • 49