Get nested value in object
JavaScript, Object, Recursion · Oct 19, 2020

Gets the target value in a nested JSON object, based on the given key.
- Use the
in
operator to check iftarget
exists inobj
. - If found, return the value of
obj[target]
. - Otherwise use
Object.values()
andArray.prototype.reduce()
to recursively calldig
on each nested object until the first matching key/value pair is found.
const dig = (obj, target) => target in obj ? obj[target] : Object.values(obj).reduce((acc, val) => { if (acc !== undefined) return acc; if (typeof val === 'object') return dig(val, target); }, undefined); const data = { level1: { level2: { level3: 'some data' } } }; dig(data, 'level3'); // 'some data' dig(data, 'level4'); // undefined