Test whether an object contains a nested key path, either own or inherited.
var deepHasProp = require( '@stdlib/assert/deep-has-property' );Returns a boolean indicating if a value has a specified path, either own or inherited.
function Foo() {
return this;
}
Foo.prototype.b = {
'c': 'd'
};
var obj = { 'a': new Foo() };
var bool = deepHasProp( obj, 'a.b.c' );
// returns true
bool = deepHasProp( obj, 'a.b.c.d.e' );
// returns falseIf a key path includes an array, specify the numeric index.
var arr = [
{
'a': [
{
'b': [
{ 'c': 'd' },
{ 'e': 'f' }
]
}
]
}
];
var bool = deepHasProp( arr, '0.a.0.b.0.c' );
// returns true
bool = deepHasProp( arr, '0.a.1.b.0.c' );
// returns false
bool = deepHasProp( arr, '0.a.0.b.1.c' );
// returns falseThe key path may be specified as either a delimited string or a key array.
var obj = { 'a': { 'b': { 'c': 'd' } } };
var bool = deepHasProp( obj, [ 'a', 'b', 'c' ] );
// returns trueThe function accepts the following options:
- sep: key path separator. Default:
'.'.
By default, the function assumes . separated key values. To specify an alternative separator, set the sep option.
var obj = { 'a': { 'b': { 'c': 'd' } } };
var bool = deepHasProp( obj, 'a/b/c', {
'sep': '/'
});
// returns trueReturns a function which tests whether a value contains a nested key path, either own or inherited.
var has = deepHasProp.factory( 'a/b/c', {
'sep': '/'
});Returns a boolean indicating whether a value contains a nested key path, either own or inherited.
var has = deepHasProp.factory( 'a.b.c' );
function Foo() {
return this;
}
Foo.prototype.b = {
'c': 'd'
};
var obj = { 'a': new Foo() };
var bool = has( obj );
// returns true-
When provided
nullorundefined, the function result is alwaysfalse.var bool = deepHasProp( null, 'a.b.c' ); // returns false bool = deepHasProp( void 0, 'a.b.c' ); // returns false
-
Property values other than
nullorundefinedare coerced toobjects.var obj = { 'a': 'b' }; var bool = deepHasProp( obj, 'a.length' ); // returns true
-
Key path
arrayelements are coerced tostrings.var obj = { 'null': false }; var bool = deepHasProp( obj, [ null ] ); // returns true obj = { '[object Object]': false }; bool = deepHasProp( obj, [ {} ] ); // returns true
var deepHasProp = require( '@stdlib/assert/deep-has-property' );
var bool = deepHasProp( { 'a': { 'b': { 'c': 'd' } } }, 'a.b.c' );
// returns true
bool = deepHasProp( { 'a': { 'b': { 'c': 'd' } } }, [ 'a', 'b', 'hasOwnProperty' ] );
// returns true
bool = deepHasProp( { 'a': { 'b': { 'c': 'd' } } }, 'a/b/c', {
'sep': '/'
});
// returns true
bool = deepHasProp( { 'a': { 'b': { 'c': 'd' } } }, 'a.b.c.d' );
// returns false
bool = deepHasProp( { 'a': [ { 'b': { 'c': 'd' } } ] }, [ 'a', '0', 'b', 'c', 'd' ] );
// returns false
bool = deepHasProp( { 'a': { 'b': { 'c': 'd' } } }, 'a/b/c/d/e', {
'sep': '/'
});
// returns false
// Create a customized function:
var has = deepHasProp.factory( 'a_b_c', {
'sep': '_'
});
bool = has( { 'a': { 'b': { 'c': 'd' } } } );
// returns true
bool = has( { 'a': [ { 'b': { 'c': 'd' } } ] } );
// returns false@stdlib/assert/deep-has-own-property: test whether an object contains a nested key path.@stdlib/assert/has-own-property: test if an object has a specified property.@stdlib/object/deep-get: get a nested property value.@stdlib/utils/deep-pluck: extract a nested property value from each element of an object array.@stdlib/object/deep-set: set a nested property value.