【发布时间】:2013-05-15 11:38:07
【问题描述】:
我想访问对象,前提是它的字符串路径以数组的形式是已知的。
1.) 有一个对象,其中
root["obj1"]["obj2"] = 1;
(一般情况下root["obj1"]...["objN"])
2.) 我只知道字符串 objectPath:
var objectPath = 'root["obj1"]["obj2"]'
3.) 我不仅需要读取对象,还需要设置它的值,例如
objectPath = 2;
//so root["obj1"]["obj2"] === 2
据我了解
eval() 可能有一些选项,但它获取的是值,而不是变量;
1234563等于循环中的当前对象。
相关链接: Access object child properties using a dot notation string
【问题讨论】:
-
是的,使用 eval(),我需要重置对象,例如将 1 更改为 2。
-
您链接到的问题中接受的答案比 eval 好得多。它几乎包含了您需要的所有内容,您只需使用不同的拆分并将其更改为
set(path,value)函数。 -
一个字符“。”针对两个字符“[”“]”已经是一些解析器方法,我相信我们可以做得更好?
-
毕竟要做好这样的功能并不容易,所以我写了一个。见答案。
标签: javascript jquery arrays object hierarchy