如何将多个对象属性作为参数传递?

时间:2020-06-09 12:39:21

标签: javascript

让我们以这个对象为例:

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

1 个答案:

答案 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'));