如何在javascript中将字符串中的属性添加到对象?

时间:2015-03-15 04:34:50

标签: javascript

给出以下对象:

var obj = { a: 1 };

和以下字符串:

var s = "b: 2";

我需要的是在评估字符串s后结束以下对象:

obj === { a:1, b:2 }

我试过eval,但无法理解。任何想法?

4 个答案:

答案 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); 




注意:

  1. eval()被视为高风险函数,可用于利用您的解决方案。
  2. 您是否听说过JSON数据模型? check it here