dig
Returns the target value in a nested JSON object, based on the given key.
Use the in
operator to check if target
exists in obj
.
If found, return the value of obj[target]
, otherwise use Object.values(obj)
and Array.prototype.reduce()
to recursively call dig
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