我有一根线
string = "masterkey[key1][key2]";我想在此基础上创建一个关联数组,以便它的计算结果为:
{
masterkey: {
key1: {
key2: value
}
}
}我已经尝试过了:
var fullName = string;
fullName = fullName.replace(/\[/g, '["');
fullName = fullName.replace(/\]/g, '"]');
eval("var "+fullName+";");但是我得到了一个错误:带有一个指向([) "var masterkey["key1"]["key2"];"中第一个括号的箭头的missing ; before statement
我知道eval()不适合使用,所以如果你有任何建议,最好不要使用它,我真的很感激!
发布于 2012-02-09 17:28:28
1)使用eval时,您提供的参数必须是有效的、完整的javascript。
这条线
var masterkey["key1"]["key2"];不是有效的javascript语句。
为变量赋值时,必须使用=。简单地将一些值连接到变量名的末尾是行不通的。
2) var masterkey = ["key1"]["key2"]没有任何意义。
这看起来像是试图将nothing的"key1“属性的"key2”属性分配给masterkey。
如果您希望结果类似于您给出的示例对象,那么这就是您需要创建的。也就是说,正确解析字符串以创建对象比使用正则表达式将其转换为脚本进行计算要好得多。
https://stackoverflow.com/questions/9207920
复制相似问题