Last active
February 16, 2022 10:29
-
-
Save nire0510/2b2e5adf0eaeac173fc8672d4c5e9580 to your computer and use it in GitHub Desktop.
Naive implementation of lodash.get method
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @property {object} object - The object to query | |
* @property {string} path - The path of the property to get | |
* @property {object} fallback - The default value to return if no value found in path | |
* @returns {*} Returns the resolved value (undefined / fallback value / value found). | |
*/ | |
function get(object, path, fallback) { | |
const dot = path.indexOf('.'); | |
if (object === undefined) { | |
return fallback || undefined; | |
} | |
if (dot === -1) { | |
if (path.length && path in object) { | |
return object[path]; | |
} | |
return fallback; | |
} | |
return get(object[path.substr(0, dot)], path.substr(dot + 1), fallback); | |
} | |
/* TESTS */ | |
const object = { | |
foo: { | |
bar: 1 | |
}, | |
baz: 5, | |
lor: ['mir', 'dal'] | |
}; | |
console.log(get(object, 'none.bar')); | |
// => undefined | |
console.log(get(object, 'none.bar', 'default')); | |
// => 'default' | |
console.log(get(object, 'baz')); | |
// => 5 | |
console.log(get(object, 'foo.bar')); | |
// => 1 | |
console.log(get(object, 'lor.1')); | |
// => 'dal' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@fvena-portfolio thanks! I'll fix it right away.
It is an old gist, I use instead a NPM package I created, called
getv
.