在javascript中,如何动态获取对象的嵌套属性?

19 浏览
0 Comments

在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)。

特别是因为我需要在循环中多次获取嵌套的属性。

0