UNPKG

bbo

Version:

bbo is a utility library of zero dependencies for javascript.

51 lines (36 loc) 857 B
'use strict'; 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;