UNPKG

deepdash-es

Version:

➔ 𝐃eep extension for 𝐋odash-es: ✓ eachDeep ✓ filterDeep ✓ pickDeep ✓ omitDeep ✓ keysDeep ✓ index ✓ condenseDeep ⋮ Parent nodes tracking ⋮ Circular references check ⋮ Leaves only mode ⋮ Path as a valid js string or an array ⋮

41 lines (36 loc) 1.04 kB
import getEachDeep from './getEachDeep.js'; export default function getMapValuesDeep(_) { var eachDeep = getEachDeep(_); function mapValuesDeep(obj, iteratee, options) { iteratee = _.iteratee(iteratee); let res = Array.isArray(obj) ? [] : _.isObject(obj) ? {} : _.clone(obj); let skipChildren; eachDeep( obj, function (value, key, parent, context) { // if (!context.skipChildren) { context.skipChildren = (skip) => { skipChildren = skip; }; // } skipChildren = undefined; var r = iteratee(value, key, parent, context); if (!context.isLeaf && skipChildren === undefined) { skipChildren = value !== r && Array.isArray(value) != Array.isArray(r); } if (context.path !== undefined) { _.set(res, context.path, r); } else { res = r; } if (skipChildren) { return false; } }, options ); return res; } return mapValuesDeep; }