javascript - 从对象和键数组中查找值
问题描述
我有一个键数组['a', 'b', 'c', 'd']
和嵌套对象{ a: { b: { c: { d: '58' } } } }
如何获得嵌套对象的值'58'
?我尝试过这样的事情,但我只有一个“级别”的价值
const a = ['a', 'b', 'c', 'd']
const b = { a: { b: { c: { d: '58' } } } }
const getValue = (a,b) => { return Object.values(b).find(key => a[key] === b[key]) }
解决方案
.reduce()
方法可以提供帮助。
调用.reduce()
数组并将对象b
作为初始值传递给.reduce()
方法。该方法的回调函数.reduce()
应该只返回acc[curr]
.
在第一次调用期间,acc
将是对象b
,并且curr
将是数组中的第一个元素,即'a'
. 所以第一次调用回调函数会返回b['a']
,即{ b: { c: { d: '58' } } }
。
const a = ['a', 'b', 'c', 'd'];
const b = { a: { b: { c: { d: '58' } } } };
const result = a.reduce((acc, curr) => acc[curr], b);
console.log(result);
推荐阅读
- javascript - 将元素添加到顶部时保持滚动位置
- azure - 未收到 Microsoft Azure DDoS 保护警报
- arrays - 在C语言中,为什么要用sizeof函数作为分母来存储数组的元素个数?
- angular - 使用 toPromise() 和 observable 不能异步工作
- python - 来自字典的数据框,列表作为最后一个值
- reactjs - Material-Table:在点击/状态更改时更改特定操作的颜色
- r - 当整个行值与正则表达式匹配或匹配一组值时,删除 data.frame 中的行
- javascript - 未聚焦时 editorState 的 console.log 显示所有更改的堆栈
- node.js - 遍历 JSON 数组每次都会给我 0
- reactjs - 如何在 React 和 Graphql 中格式化日期“1594321836292”