refactor map/filter with reduce

This commit is contained in:
Henry Szeto
2018-07-08 23:34:11 -07:00
parent 6304ab2d11
commit ab1d0ed9c8

View File

@ -2,19 +2,22 @@
Return the value in a nested JSON object by the key.
Given the key name (or target), it will map through each key in the object and look for object type.
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) => {
return obj[target] ?
obj[target] :
Object.keys(obj).map(key => {
if (typeof(obj[key]) === "object") {
return dig(obj[key], target);
}
}).filter(defined=>defined)[0]
};
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);
```
```