Files
30-seconds-of-code/snippets/dig.md
2018-07-08 23:34:11 -07:00

35 lines
773 B
Markdown

### dig
Return the value in a nested JSON object by the key.
Given the key name (or target), it will loop through each key/value in the object and look for object type.
If value is an object, dig is called recusively until the first matching key/value 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') {
const v = dig(val, target);
return v === undefined ? undefined : v;
}
}, undefined);
```
```
const data = {
level1:{
level2:{
level3: "some data"
}
}
};
dig(data, 'level3'); // "some data"
dig(data, 'level4'); // undefined
```