What is has-value?
The has-value npm package is used to check if a value exists, is not empty, or is not undefined. It is useful for validating data and ensuring that required fields are populated.
What are has-value's main functionalities?
Check if a value exists
This feature checks if a given value exists. In this example, the string 'Hello World' is checked, and since it is a non-empty string, the result is true.
const hasValue = require('has-value');
console.log(hasValue('Hello World')); // true
Check if an object property has a value
This feature checks if a specific property of an object has a value. In this example, the object has a property 'name' with a value 'John Doe', so the result is true.
const hasValue = require('has-value');
const obj = { name: 'John Doe' };
console.log(hasValue(obj, 'name')); // true
Check if an array has a value
This feature checks if an array has any values. In this example, the array [1, 2, 3] is checked, and since it contains elements, the result is true.
const hasValue = require('has-value');
const arr = [1, 2, 3];
console.log(hasValue(arr)); // true
Check if a nested object property has a value
This feature checks if a nested property within an object has a value. In this example, the nested property 'user.name' is checked, and since it has a value 'Jane Doe', the result is true.
const hasValue = require('has-value');
const nestedObj = { user: { name: 'Jane Doe' } };
console.log(hasValue(nestedObj, 'user.name')); // true
Other packages similar to has-value
lodash
Lodash is a popular utility library that provides a wide range of functions for manipulating arrays, objects, and other data types. It includes a method `_.has` to check if a property exists in an object, which is similar to the functionality provided by has-value.
underscore
Underscore is another utility library similar to Lodash. It provides a method `_.has` to check if an object contains a given property. While it does not specifically check for non-empty values, it can be used in combination with other methods to achieve similar results.
validator
Validator is a library for string validation and sanitization. It includes methods to check if a string is empty or not, which can be used to validate the presence of values in a similar way to has-value.
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())
console.log(has('foo'))
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'));
console.log(has({ foo: { bar: [0] } }, 'foo.bar'));
console.log(has({ foo: { bar: [[[]]] } }, 'foo.bar'));
console.log(has({ foo: { bar: [[], []] } }, 'foo.bar'));
console.log(has({ foo: { bar: [] } }, 'foo.bar'));
Booleans
console.log(has({ foo: { bar: true } }, 'foo.bar'));
console.log(has({ foo: { bar: false } }, 'foo.bar'));
Buffers
console.log(has({ foo: { bar: new Buffer() } }, 'foo.bar'));
console.log(has({ foo: { bar: new Buffer('foo') } }, 'foo.bar'));
Dates
Dates are always true.
console.log(has({ foo: { bar: new Date() } }, 'foo.bar'));
Errors
Returns false
if err.message
is an empty string.
console.log(has({ foo: { bar: new Error() } }, 'foo.bar'));
console.log(has({ foo: { bar: new Error('foo') } }, 'foo.bar'));
Functions
Functions are always true.
console.log(has({ foo: { bar: function(foo) {} } }, 'foo.bar'));
console.log(has({ foo: { bar: function() {} } }, 'foo.bar'));
Maps
console.log(has({ foo: { bar: new Map() } }, 'foo.bar'));
console.log(has({ foo: { bar: new Map([['foo', 'bar']]) } }, 'foo.bar'));
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'));
Objects
console.log(has({ foo: { bar: {} } }, 'foo.bar'));
console.log(has({ foo: { bar: { a: 'a' }} } }, 'foo.bar'));
console.log(has({ foo: { bar: { foo: undefined } } }, 'foo.bar'));
console.log(has({ foo: { bar: { foo: null } } }, 'foo.bar'));
Numbers
console.log(has({ foo: { bar: 1 } }, 'foo.bar'));
console.log(has({ foo: { bar: 0 } }, 'foo.bar'));
Regular expressions
console.log(has({ foo: { bar: new RegExp() } }, 'foo.bar'));
console.log(has({ foo: { bar: new RegExp('foo') } }, 'foo.bar'));
Sets
console.log(has({ foo: { bar: new Set() } }, 'foo.bar'));
console.log(has({ foo: { bar: new Set(['foo', 'bar']) } }, 'foo.bar'));
Strings
console.log(has({ foo: { bar: 'a' } }, 'foo.bar'));
console.log(has({ foo: { bar: '' } }, 'foo.bar'));
Undefined
console.log(has({ foo: { bar: } }, 'foo.bar'));
console.log(has({ foo: { bar: void 0 } }, 'foo.bar'));
console.log(has({ foo: { bar: undefined } }, 'foo.bar'));
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 return false
null
now returns true
About
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:
$ 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:
$ npm install -g verbose/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
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.