Javascript:通过数组符号字符串访问对象(数组)
javascript: access object (array) by array notation string
我想访问对象提供只有它的字符串路径在数组的形式是已知的。
1.)存在一个对象,其中
root["obj1"]["obj2"] = 1;
(一般为root["obj1"]...["objN"]
)
2)。我只有字符串objectPath已知:
var objectPath = 'root["obj1"]["obj2"]'
3)。我不仅需要读取对象,还需要设置它的值,如
objectPath = 2;
//so root["obj1"]["obj2"] === 2
As I understand
eval()可能有一些选项,但它获取值,而不是变量;
可以循环通过root的所有对象,转换为"root.obj1"。
(这不是情况,因为"obj1"可以很容易地成为"obj with spaces1")并检查给定字符串是否等于循环中的当前对象。
相关链接:使用点符号字符串
我为你写了一个函数,试图使它尽可能美观和可重用:
function setProp(path, newValue, holder) {
var t = path.split(/['[']"]+/).filter(function(v){return v}),
l = t.pop(), s, o = holder || window;
while (s = t.shift()) o = o[s];
o[l] = newValue;
}
你可以这样使用:
setProp('root["obj1"]["obj2"]', 2);
如果根对象不在全局变量中,则将相关的holder作为第三个参数传递。
演示(打开控制台查看更改后的根对象)
相关文章:
- 将图像数组访问到动态表中
- JavaScript 自包含函数数组访问自我索引
- 如何使用 angularjs 从 json 数组访问数组
- 带逗号的 JavaScript 数组访问
- JavaScript 数组访问问题
- 从 js obj 数组访问外部 js obj 属性
- 如何从数组访问 json 对象
- Javascript-使用索引数组访问数组的元素
- Javascript 全局数组访问成员未定义
- javascript成对值数组访问
- 如何传递到该数组中对象的数组访问属性的排序方法的函数
- 我怎么能给我的属性的默认数组访问传入的jQuery对象在我的插件
- Javascript数组访问不能在IE 7中工作
- 在Mustache.js / ICanHaz中从内部数组访问外部数组值
- Ajax JSON数组——访问信息
- 如何从存储在变量中的数组访问键?
- 通过JSON AJAX数组访问数据->对象
- 使用数组访问多维数组
- Javascript数组访问未定义
- 如何从单击处理程序中的对象数组访问对象属性