javascript - 将字符串转换为 javascript 关联数组

标签 javascript string json associative-array javascript-objects

我有一个字符串

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

演示:http://jsfiddle.net/hR8yM/

关于javascript - 将字符串转换为 javascript 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207920/

相关文章:

javascript - 为什么 typeof 的结果与传入的表达式的计算结果不同?

python - Flask 没有从请求中获取任何 POST 数据

sql - 使用通配符的 OpenJson

javascript - AngularJS 中的 JSON 数组与对象

javascript - Chrome 桌面通知未取消

javascript - 如何让函数每5秒执行一次?

javascript - 将 DOM 元素数组缩减为 JavaScript 中最深层次的元素

c++ - 为什么我的函数返回一个空字符串?

.net - 将 float 转换为字符串并获取精确值

c - 在 C 中将 strsep() 与动态字符串数组一起使用