has-value

Returns true if a value exists, false if empty. Works with deeply nested values using object paths.
Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your :heart: and support.
Install
Install with npm:
$ npm install --save has-value
Heads up!
Breaking changes in v2.0! See the release history for details.
Usage
const has = require('has-value');
console.log(has()) //=> true
console.log(has('foo')) //=> true
Works for:
- booleans
- functions
- numbers
- strings
- nulls
- object
- arrays
isEmpty
To do the opposite and test for empty values, do:
const isEmpty = (...args) => !has(...args);
Supported types
Arrays
console.log(has({ foo: { bar: ['a'] } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: [0] } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: [[[]]] } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: [[], []] } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: [] } }, 'foo.bar')); //=> false
Booleans
console.log(has({ foo: { bar: true } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: false } }, 'foo.bar')); //=> true
Buffers
console.log(has({ foo: { bar: new Buffer() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Buffer('foo') } }, 'foo.bar')); //=> true
Dates
Dates are always true.
console.log(has({ foo: { bar: new Date() } }, 'foo.bar')); //=> true
Errors
Returns false
if err.message
is an empty string.
console.log(has({ foo: { bar: new Error() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Error('foo') } }, 'foo.bar')); //=> true
Functions
Functions are always true.
console.log(has({ foo: { bar: function(foo) {} } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: function() {} } }, 'foo.bar')); //=> true
Maps
console.log(has({ foo: { bar: new Map() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Map([['foo', 'bar']]) } }, 'foo.bar')); //=> true
Null
null
is always true, as it's assumed that this is a user-defined value, versus undefined
which is not.
console.log(has({ foo: { bar: null } }, 'foo.bar')); //=> true
Objects
console.log(has({ foo: { bar: {} } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: { a: 'a' }} } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: { foo: undefined } } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: { foo: null } } }, 'foo.bar')); //=> true
Numbers
console.log(has({ foo: { bar: 1 } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: 0 } }, 'foo.bar')); //=> true
Regular expressions
console.log(has({ foo: { bar: new RegExp() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new RegExp('foo') } }, 'foo.bar')); //=> true
Sets
console.log(has({ foo: { bar: new Set() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Set(['foo', 'bar']) } }, 'foo.bar')); //=> true
Strings
console.log(has({ foo: { bar: 'a' } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: '' } }, 'foo.bar')); //=> false
Undefined
console.log(has({ foo: { bar: } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: void 0 } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: undefined } }, 'foo.bar')); //=> false
Release history
v2.0.0
Breaking changes
- Now returns false if the first argument is not an object, function or array, and the second argument is not a string or array.
v1.0.0
zero
always returns truearray
now recurses, so that an array of empty arrays will returnfalse
null
now returns true
About
sh
$ npm install && npm test
sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
Related projects
You might also be interested in these projects:
- define-property: Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty. | homepage
- get-value: Use property paths like 'a.b.c' to get a nested value from an object. Even works… more | homepage
- set-value: Create nested values and any intermediaries using dot notation (
'a.b.c'
) paths. | homepage - unset-value: Delete nested properties from an object using dot notation. | homepage
Contributors
Commits | Contributor |
---|---|
32 | jonschlinkert |
2 | rmharrison |
1 | wtgtybhertgeghgtwtg |
Author
Jon Schlinkert
License
Copyright © 2018, Jon Schlinkert. Released under the MIT License.
This file was generated by verb-generate-readme, v0.6.0, on March 03, 2018.