首页 > 解决方案 > 从对象和键数组中查找值

问题描述

我有一个键数组['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]) }

标签: javascriptecmascript-6

解决方案


.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);


推荐阅读