给出javascript对象:
obj = {
a: {
b: {
c: 3
}
}
}
我可以按以下方式访问最深的属性:obj['a']['b']['c']
或obj.a.b.c
。现在,我想使用数组['a', 'b', 'c']
访问它。如何使用此数组访问相同的对象属性?
注意:该方法不必“安全”,因此无需检查:typeError:无法读取未定义的属性...。
答案 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))