首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串转换为javascript关联数组

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

Stack Overflow用户
提问于 2012-02-09 17:05:02
回答 4查看 1.6K关注 0票数 1

我有一根线

代码语言:javascript
运行
复制
string = "masterkey[key1][key2]";

我想在此基础上创建一个关联数组,以便它的计算结果为:

代码语言:javascript
运行
复制
{
  masterkey: {
    key1: {
      key2: value
    }
  }
}

我已经尝试过了:

代码语言:javascript
运行
复制
var fullName = string;
fullName = fullName.replace(/\[/g, '["');
fullName = fullName.replace(/\]/g, '"]');
eval("var "+fullName+";");

但是我得到了一个错误:带有一个指向([) "var masterkey["key1"]["key2"];"中第一个括号的箭头的missing ; before statement

我知道eval()不适合使用,所以如果你有任何建议,最好不要使用它,我真的很感激!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-09 17:22:51

不是最美的,但它对我很有效:

代码语言:javascript
运行
复制
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/

票数 4
EN

Stack Overflow用户

发布于 2012-02-09 17:54:56

代码语言:javascript
运行
复制
function parse(s, obj) {
    s.match(/\w+/g).reduce(function(o, p) { return o[p] = {} }, obj);
    return obj;
}

console.dir(parse("masterkey[key1][key2]", {}))
票数 1
EN

Stack Overflow用户

发布于 2012-02-09 17:27:25

现在试试这个

代码语言:javascript
运行
复制
string = "masterkey[key1][key2]";
var fullName = string;
fullName = fullName.replace(/\[/g, '[\'');
fullName = fullName.replace(/\]/g, '\']');

document.write("var "+fullName+";");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9207920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档