Javascript 通过循环创建具有值的深度对象

Javascript 通过循环创建具有值的深度对象,javascript,object,Javascript,Object,我正在尝试创建一个相当于user['address']['street']=VALUE 如果我有一个字符串,比如: var user = 'user[address][street]' user.split(/[[\]]{1,2}/).slice(0,-1); // which gives me [user, address, street] 我试图得到: user: { address: { street : VALUE } } 我已经设法找到了如何

我正在尝试创建一个相当于
user['address']['street']=VALUE

如果我有一个字符串,比如:

var user = 'user[address][street]' 
user.split(/[[\]]{1,2}/).slice(0,-1);    // which gives me [user, address, street]
我试图得到:

user: {
    address: {
        street : VALUE
    }
}
我已经设法找到了如何创建deep对象:

var newObj = obj
split.forEach(function(item){
    newObj = newObj[item] = {}
})
但我正在努力设置最后一个属性的值


您需要添加一个检查,查看您是否在列表中的最后一项,然后分配值

var newObj = obj
var last = split.length - 1;
split.forEach(function(item, idx){
    newObj = newObj[item] = (idx == last) ? value : {};
});
示例如下:

编辑

你也可以考虑把它变成一个函数,这样你就可以很容易地重用它。 这里的例子:

像这样吗?