使用数组访问(深度)嵌套对象属性

时间:2019-04-24 20:01:13

标签: javascript arrays object

给出javascript对象:

obj = {
    a: {
        b: {
            c: 3
           }
       }
   }

我可以按以下方式访问最深的属性:obj['a']['b']['c']obj.a.b.c。现在,我想使用数组['a', 'b', 'c']访问它。如何使用此数组访问相同的对象属性?

注意:该方法不必“安全”,因此无需检查:typeError:无法读取未定义的属性...。

1 个答案:

答案 0 :(得分:3)

您可以使用reduce方法执行此操作,并将对象作为累加器参数传递。

const obj = {
  a: {
    b: {
      c: 3
    }
  }
}

const key = ['a', 'b', 'c'];

function get(obj, key) {
  return key.reduce((r, e, i, a) => {
    return r[e] || (a[i + 1] ? {} : undefined)
  }, obj)
}

console.log(get(obj, key))

相关问题