bbo
Version:
bbo is a utility library of zero dependencies for javascript.
51 lines (36 loc) • 857 B
JavaScript
;
require('./get_tag.js');
var is_array = require('./is_array.js');
var is_string = require('./is_string.js');
var is_symbol = require('./is_symbol.js');
function get(obj, propsArg, defaultValue) {
if (!obj) {
return defaultValue;
}
var props;
var prop;
if (Array.isArray(propsArg)) {
props = propsArg.slice(0);
}
if (is_string(propsArg)) {
props = propsArg.split('.');
}
if (is_symbol(propsArg)) {
props = [propsArg];
}
if (!is_array(props)) {
throw new Error('props arg must be an array, a string or a symbol');
}
while (props.length) {
prop = props.shift();
if (!obj) {
return defaultValue;
} // eslint-disable-next-line no-param-reassign
obj = obj[prop];
if (obj === undefined) {
return defaultValue;
}
}
return obj;
}
module.exports = get;