我有一个字符串
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"];"
我知道 eval()
不好用,所以如果您有任何建议,最好不要使用它,我将不胜感激!
最佳答案
不是最漂亮的,但对我有用:
var
path = "masterkey[key1][key2]",
scope = {};
function helper(scope, path, value) {
var path = path.split('['), i = 0, lim = path.length;
for (; i < lim; i += 1) {
path[i] = path[i].replace(/\]/g, '');
if (typeof scope[path[i]] === 'undefined') {
scope[path[i]] = {};
}
if (i === lim - 1) {
scope[path[i]] = value;
}
else {
scope = scope[path[i]];
}
}
}
helper(scope, path, 'somevalue');
console.log(scope);
关于javascript - 将字符串转换为 javascript 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207920/