如何在javascript字典中识别

时间:2016-01-14 09:28:19

标签: javascript arrays dictionary

有没有办法获取JavaScript字符串,如

"program[one] = js"

并在此字符串上运行并使其可访问,以便在我键入

console.log(program.one); 

我会得到js

3 个答案:

答案 0 :(得分:0)

您可以使用eval方法(虽然不是强烈推荐)并执行以下操作:

var program = {};

var str = "program['one'] = 'js'";

eval(str);

console.log(program.one);

答案 1 :(得分:0)

假设您只想允许字符串在program中写入,并且唯一有效的字符串格式为program[name] = value,则有一个非邪恶的解决方案:

var program = {};

var input = "program[one] = js";

var patt = /program\[(.*?)\] = (.*)/;
var result = patt.exec(input); // Array [ "program[one] = js", "one", "js" ]

program[result[1]] = result[2];

console.log(program.one); // js

编辑:如果您需要支持引号并结束分号,则可能需要调整正则表达式(patt)。

使用evalconsidered harmful。如果你不能控制传递给它的字符串 - 通常就是这种情况 - 它可以运行任何允许代码注入的代码。 不,不要假装你可以做我上面为任意程序做的事情。另一方面,如果你控制了字符串,你就不需要eval - 尽管如果你使用metaprogramming by code generation in javascript我接受它可能是实用的。

答案 2 :(得分:0)

你正在考虑这个问题。

你想要的是一些代表你可以解析的JS对象的JSON。

var json = '{"program":{"one": "js"}}';
var obj = JSON.parse(json);

obj.program.one // js

即使你没有考虑到这一点,你需要回过头来解决为什么你需要使用像“program [one] =这样的字符串= js“因为这种方法是错误的,只会导致心痛。

DEMO