35 lines
773 B
Markdown
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
|
|
```
|