让我们以这个对象为例:
var obj = {a: {b: {c: 'result'}}}
我知道这样做可以得到c的值:
console.log(obj.a.b.c) // 'result'
或者这个:
console.log(obj['a']['b']['c'])
但是如何获取将obj和column作为函数参数传递的c的值?
function func(obj, attributes) {
return obj[attributes]
}
console.log(func(obj, a.b.c)) // how to make this work
console.log(func(obj, ['a']['b']['c'])) // or this
答案 0 :(得分:2)
您可以像attributes
一样将string
作为'a.b.c'
传递。然后将其拆分并使用reduce
获得所需的值。
在下面进行测试。
var obj = {a: {b: {c: 'result'}}}
function func(obj, attributes) {
return attributes.split('.').reduce((x, a) => x[a], obj);
}
console.log(func(obj, 'a.b.c'));
console.log(func(obj, 'a.b'));