A thing for making object traversals quicker
Object traversals are slow, recursion is not fun, and waiting 10s for a page to load because you have to parse a JSON blob 17 times is terrible. This tries to fix some of that.
Instead of trying ot recursively search an object to find all children that match a pattern, let's only search it once, construct a graph of all instances of the thing we care about, and manipulate that graph.
Example:
; const objectThatICareAbout = a: foo: true foo: false c: foo: true b: foo: true // Find all objects that have a property `foo`// The predicate function returns what to store for a given path in the object// If a falsy value is returned, then that path is ignored and not cached.const predicate = _ && _ && foo const cache = objectThatICareAbout predicate; // Get all the paths where `foo` is a propcache; // [ ['a', 0], ['a', 1], ['a', 1, 'c'], ['b'] ] // Get a sub-graph relative to child// same as new `ObjectCache(objectThatICareAbout.a, predicate)`, without the overhead of parsing againcache;
API
;
ObjectCache instances
Methods
ObjectCache.prototype.constructor(seedObject : Object, predicate : Function)
Constructs a new ObjectCache instance
ObjectCache.prototype.getCacheForValue(val : Any)
Create a new ObjectCache instance for the given value
ObjectCache.prototype.getCacheForPath(path: Array)
Create a new ObjectCache instance for the given subtree
ObjectCache.prototype.getPaths()
Get all the current paths in the tree
ObjectCache.prototype.getValues()
Get all the current values in the tree