在javascript中,如何动态获取对象的嵌套属性?
- 论坛
- 在javascript中,如何动态获取对象的嵌套属性?
19 浏览
在javascript中,如何动态获取对象的嵌套属性?
var arr = { foo: 1, bar: { baz: 2 }, bee: 3 };
function getter(variable) {
var props = variable.split('.');
var value = arr;
for (var i = 0; i < props.length; i++) {
value = value[props[i]];
}
return value;
}
如果我想要获取 'foo' 或者 'bee',我只需要执行 arr[variable] - 这很简单,函数已经做到了这一点。
但是如果我想要获取 arr.bar.baz,也就是 arr[bar][baz] 呢?
我该如何传递参数给 getter 函数以实现这一点(当然,也要允许使用相同的函数获取非嵌套属性)。
我尝试过 getter('bar.baz') 和 getter('[bar][baz]'),但它们都不起作用。
我猜我可以解析点号或方括号(就像这里:In javascript, test for property deeply nested in object graph?)。是否有更简洁的方法呢?(当然,除了使用 eval)。
特别是因为我需要在循环中多次获取嵌套的属性。