[英]Converting A String Into a Nested JSON Object
我想知道這是否可能沒有eval(我聽說它是邪惡的)。
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:{}}}};
可用於解決問題的功能是使用字符串索引進行動態屬性訪問。 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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.