UNPKG

@szydlovski/deep-object

Version:

utility functions for deeply nested objects

96 lines 4.24 kB
import { _deepObjectOperation, _deepObjectTraverse, } from './core.js'; function deepObjectMap(target, callback, includeIntermediate = false, depthFirst = false) { const result = {}; _deepObjectOperation(target, (value, key, path, object, isObject) => { if (isObject && !includeIntermediate) return; const position = _deepObjectTraverse(result, path.slice(0, path.length - 1)); position[key] = callback(value, key, path, object, target); }, depthFirst); return result; } function deepObjectFilter(target, callback, includeIntermediate = false, depthFirst = false) { const result = {}; _deepObjectOperation(target, (value, key, path, object, isObject) => { if (isObject && !includeIntermediate) return; if (callback(value, key, path, object, target)) { const position = _deepObjectTraverse(result, path.slice(0, path.length - 1)); position[key] = value; } }, depthFirst); return result; } function deepObjectFind(target, callback, includeIntermediate = false, depthFirst = false) { let foundValue = undefined; _deepObjectOperation(target, (value, key, path, object, isObject) => { if (foundValue !== undefined) return; if (isObject && !includeIntermediate) return; if (callback(value, key, path, object, target)) { foundValue = value; } }, depthFirst); return foundValue; } function deepObjectSome(target, callback, includeIntermediate = false, depthFirst = false) { return (undefined !== deepObjectFind(target, callback, includeIntermediate, depthFirst)); } function deepObjectEvery(target, callback, includeIntermediate = false, depthFirst = false) { let every = true; _deepObjectOperation(target, (value, key, path, object, isObject) => { if (!every) return; if (isObject && !includeIntermediate) return; every = every && callback(value, key, path, object, target); }, depthFirst); return every; } function deepObjectForEach(target, callback, includeIntermediate = false, depthFirst = false) { _deepObjectOperation(target, (value, key, path, object, isObject) => { if (isObject && !includeIntermediate) return; callback(value, key, path, object, target); }, depthFirst); } function deepObjectValues(target, includeIntermediate = false, depthFirst = false) { const values = []; _deepObjectOperation(target, (value, key, path, object, isObject) => { if (isObject && !includeIntermediate) return; values.push(value); }, depthFirst); return values; } function deepObjectPaths(target, includeIntermediate = false, depthFirst = false) { const paths = []; _deepObjectOperation(target, (_1, _2, path, _3, isObject) => { if (isObject && !includeIntermediate) return; paths.push(path); }, depthFirst); return paths; } function deepObjectKeys(target, includeIntermediate = false, depthFirst = false) { const keys = []; _deepObjectOperation(target, (_1, key, _2, _3, isObject) => { if (isObject && !includeIntermediate) return; keys.push(key); }, depthFirst); return keys; } function deepObjectEntries(target, includeIntermediate = false, depthFirst = false) { const entries = []; _deepObjectOperation(target, (value, key, path, object, isObject) => { if (isObject && !includeIntermediate) return; entries.push([key, value, path]); }, depthFirst); return entries; } export { deepObjectForEach, deepObjectMap, deepObjectFilter, deepObjectFind, deepObjectSome, deepObjectEvery, deepObjectValues, deepObjectPaths, deepObjectKeys, deepObjectEntries, deepObjectForEach as forEach, deepObjectMap as map, deepObjectFilter as filter, deepObjectFind as find, deepObjectSome as some, deepObjectEvery as every, deepObjectValues as values, deepObjectPaths as paths, deepObjectKeys as keys, deepObjectEntries as entries, }; //# sourceMappingURL=deep-object.js.map