Returns true if a value exists, false if empty. Works with deeply nested values using object paths.
npm install 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 with npm:
``sh`
$ npm install --save has-value
Breaking changes in v2.0! See the release history for details.
`js
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:
`js`
const isEmpty = (...args) => !has(...args);
`js`
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
`js`
console.log(has({ foo: { bar: true } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: false } }, 'foo.bar')); //=> true
`js`
console.log(has({ foo: { bar: new Buffer() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Buffer('foo') } }, 'foo.bar')); //=> true
Dates are always true.
`js`
console.log(has({ foo: { bar: new Date() } }, 'foo.bar')); //=> true
Returns false if err.message is an empty string.
`js`
console.log(has({ foo: { bar: new Error() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Error('foo') } }, 'foo.bar')); //=> true
Functions are always true.
`js`
console.log(has({ foo: { bar: function(foo) {} } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: function() {} } }, 'foo.bar')); //=> true
`js`
console.log(has({ foo: { bar: new Map() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Map([['foo', 'bar']]) } }, 'foo.bar')); //=> true
null is always true, as it's assumed that this is a user-defined value, versus undefined which is not.
`js`
console.log(has({ foo: { bar: null } }, 'foo.bar')); //=> true
`js`
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
`js`
console.log(has({ foo: { bar: 1 } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: 0 } }, 'foo.bar')); //=> true
`js`
console.log(has({ foo: { bar: new RegExp() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new RegExp('foo') } }, 'foo.bar')); //=> true
`js`
console.log(has({ foo: { bar: new Set() } }, 'foo.bar')); //=> false
console.log(has({ foo: { bar: new Set(['foo', 'bar']) } }, 'foo.bar')); //=> true
`js`
console.log(has({ foo: { bar: 'a' } }, 'foo.bar')); //=> true
console.log(has({ foo: { bar: '' } }, 'foo.bar')); //=> false
`js`
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
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.
* zero always returns truearray
* now recurses, so that an array of empty arrays will return falsenull
* now returns true
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running Tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
`sh`
$ npm install && npm test
Building docs
_(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)_
To generate the readme, run the following command:
`sh`
$ npm install -g verbose/verb#dev verb-generate-readme && verb
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. | 'a.b.c'`" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">homepage paths.")
* unset-value: Delete nested properties from an object using dot notation. | homepage
| Commits | Contributor |
| --- | --- |
| 32 | jonschlinkert |
| 2 | rmharrison |
| 1 | wtgtybhertgeghgtwtg |
Jon Schlinkert
* LinkedIn Profile
* GitHub Profile
* Twitter Profile
Copyright © 2018, Jon Schlinkert.
Released under the MIT License.
*
_This file was generated by verb-generate-readme, v0.6.0, on March 03, 2018._