130 lines
3.2 KiB
Markdown
130 lines
3.2 KiB
Markdown
# has-value [![NPM version](https://img.shields.io/npm/v/has-value.svg?style=flat)](https://www.npmjs.com/package/has-value) [![NPM downloads](https://img.shields.io/npm/dm/has-value.svg?style=flat)](https://npmjs.org/package/has-value) [![Build Status](https://img.shields.io/travis/jonschlinkert/has-value.svg?style=flat)](https://travis-ci.org/jonschlinkert/has-value)
|
|
|
|
> Returns true if a value exists, false if empty. Works with deeply nested values using object paths.
|
|
|
|
## Install
|
|
|
|
Install with [npm](https://www.npmjs.com/):
|
|
|
|
```sh
|
|
$ npm install has-value --save
|
|
```
|
|
|
|
**Works for:**
|
|
|
|
* booleans
|
|
* functions
|
|
* numbers (pass `true` as the last arg to treat zero as a value instead of falsey)
|
|
* strings
|
|
* nulls
|
|
* object
|
|
* arrays
|
|
|
|
## Usage
|
|
|
|
Works with nested object paths or a single value:
|
|
|
|
```js
|
|
var hasValue = require('has-value');
|
|
|
|
hasValue({a: {b: {c: 'foo'}}} 'a.b.c');
|
|
//=> true
|
|
|
|
hasValue('a');
|
|
//=> true
|
|
|
|
hasValue('');
|
|
//=> false
|
|
|
|
hasValue(1);
|
|
//=> true
|
|
|
|
hasValue(0);
|
|
//=> false
|
|
|
|
hasValue(0, true); // pass `true` as the last arg to treat zero as a value
|
|
//=> true
|
|
|
|
hasValue({a: 'a'}});
|
|
//=> true
|
|
|
|
hasValue({}});
|
|
//=> false
|
|
|
|
hasValue(['a']);
|
|
//=> true
|
|
|
|
hasValue([]);
|
|
//=> false
|
|
|
|
hasValue(function(foo) {}); // function length/arity
|
|
//=> true
|
|
|
|
hasValue(function() {});
|
|
//=> false
|
|
|
|
hasValue(true);
|
|
hasValue(false);
|
|
//=> true
|
|
```
|
|
|
|
## isEmpty
|
|
|
|
To do the opposite and test for empty values, do:
|
|
|
|
```js
|
|
function isEmpty(o, isZero) {
|
|
return !hasValue.apply(hasValue, arguments);
|
|
}
|
|
```
|
|
|
|
## Related projects
|
|
|
|
You might also be interested in these projects:
|
|
|
|
* [get-object](https://www.npmjs.com/package/get-object): Get a property from an object using dot (object path) notation. | [homepage](https://github.com/jonschlinkert/get-object)
|
|
* [get-property](https://www.npmjs.com/package/get-property): Get a nested property or its value from an object using simple `a.b.c` paths. | [homepage](https://github.com/jonschlinkert/get-property)
|
|
* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value)
|
|
* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value)
|
|
|
|
## Contributing
|
|
|
|
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/has-value/issues/new).
|
|
|
|
## Building docs
|
|
|
|
Generate readme and API documentation with [verb](https://github.com/verbose/verb):
|
|
|
|
```sh
|
|
$ npm install verb && npm run docs
|
|
```
|
|
|
|
Or, if [verb](https://github.com/verbose/verb) is installed globally:
|
|
|
|
```sh
|
|
$ verb
|
|
```
|
|
|
|
## Running tests
|
|
|
|
Install dev dependencies:
|
|
|
|
```sh
|
|
$ npm install -d && npm test
|
|
```
|
|
|
|
## Author
|
|
|
|
**Jon Schlinkert**
|
|
|
|
* [github/jonschlinkert](https://github.com/jonschlinkert)
|
|
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
|
|
|
|
## License
|
|
|
|
Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
|
|
Released under the [MIT license](https://github.com/jonschlinkert/has-value/blob/master/LICENSE).
|
|
|
|
***
|
|
|
|
_This file was generated by [verb](https://github.com/verbose/verb), v, on March 27, 2016._ |