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 : {};
});
示例如下:
编辑
你也可以考虑把它变成一个函数,这样你就可以很容易地重用它。 这里的例子:
像这样吗?