lookup path within object.
Install with component(1):
$ component install yields/path-lookup
{
user: {
first_name: 'john'
}
}// lookup
var path = lookup(obj, 'User.FirstName', [lower, snake]);
path; // => "['user']['first_name']"
// get
Function('_', 'return _' + path)(obj); // => "john"
// set
Function('_, v', '_' + path + ' = v')(obj, '');
// get
Function('_', 'return _' + path)(obj); // => ""
// delete
Function('_', 'delete _' + path)(obj); // => true
// get
Function('_', 'return _' + path)(obj); // => undefinedLookup path within obj invoking fn(key) for each key that wasn't found
the functions should return other possibilities for a key.
return a string path or null
Same as lookup() but returns an array of keys or null.
you should probably make sure the path exists, before doing anything
that will throw.
you can either keep cache of path's and their state { path: '...', exists: true }
or just wrap stuff that will throw in a try {} catch {} block.
MIT