给出以下对象:
var obj = { a: 1 };
和以下字符串:
var s = "b: 2";
我需要的是在评估字符串s后结束以下对象:
obj === { a:1, b:2 }
我试过eval
,但无法理解。任何想法?
答案 0 :(得分:1)
Eval can be harmful所以请尝试这样的事情
var obj = { a: 1 };
var s = "b: 2";
s = s.replace(/\s/g, '').split(":");
obj[s[0]] = s[1];
var obj = { a: 1 };
var s = "b: 2";
s = s.replace(/\s/g, '').split(":");
obj[s[0]] = s[1];
alert(JSON.stringify(obj));

答案 1 :(得分:0)
您可以使用此符号obj [propName] = value动态设置对象属性。在你的情况下,我使用substring来削减你的价值和财产名称。
obj[s.substring(0,1)] = s.substring(3,4);
答案 2 :(得分:0)
这也适用于字符串中的多个键值对。
var obj = {a: 1};
str = "b: 2";
var strArr = str.split(',');
for (var index in strArr) {
var strMap = strArr[index].split(':');
obj[strMap[0].trim()] = parseInt(strMap[1].trim());
}
在这里,我只需将字符串拆分为数组,然后遍历它并生成所需的映射。
答案 3 :(得分:0)
eval()
将字符串视为普通代码,因此您只需使用return
关键字返回所需的值即可。
var expression = "{b:2}";
var expString = "return " + expression + ";"
// returns Object{ b : 2 }
alert(eval("(function() {" + expString + "}())").b);

注意:
eval()
被视为高风险函数,可用于利用您的解决方案。JSON
数据模型? check it here。