我想知道如果没有评估这是否可能(我听说它是邪恶的)。
var myString = 'myObject.property.subproperty';
并将其转换为
var obj = {
myObject: {
property: {
subproperty: {}
}
}
};
在这里待了2个小时。
我不喜欢的val解决方案:
我可以用输入字符串来完成。
var myString = 'myObject.property.subproperty';
var nameTree = myString.split('.');
var evalString = '';
var myObj = {};
_.forEach(nameTree, function(value, key){
if (key == 0) {
evalString += 'myObj[' + value + '] = {};';
} else {
evalString += '[' + value + '] = {};';
}
});
eval(evalString);
我明白了:
console.log(myObj);
// {myObject: {property:{subproperty:{}}}};
答案 0 :(得分:3)
可用于解决问题的功能是使用字符串索引进行动态属性访问。 obj["foo"]
与obj.foo
相同。
var properties = myString.split('.');
var obj = {};
var curr = obj;
for(var i=0; i<properties.length; i++){
var next = {}
curr[properties[i]] = next;
curr = next;
}