如何在jquery中转换带有分隔符的字符串为多维数组



以前可能已经问过类似的问题,但我没有找到它。我得到了这样的字符串:

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

我想在jQuery中填充一个多维对象来得到这个:

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

我的错误代码

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 } }

我终于在这里找到了答案。

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 );

最新更新