以前可能已经问过类似的问题,但我没有找到它。我得到了这样的字符串:
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 );