48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
|
var isArguments = require('./isArguments'),
|
||
|
isArray = require('./isArray'),
|
||
|
isArrayLike = require('../internal/isArrayLike'),
|
||
|
isFunction = require('./isFunction'),
|
||
|
isObjectLike = require('../internal/isObjectLike'),
|
||
|
isString = require('./isString'),
|
||
|
keys = require('../object/keys');
|
||
|
|
||
|
/**
|
||
|
* Checks if `value` is empty. A value is considered empty unless it is an
|
||
|
* `arguments` object, array, string, or jQuery-like collection with a length
|
||
|
* greater than `0` or an object with own enumerable properties.
|
||
|
*
|
||
|
* @static
|
||
|
* @memberOf _
|
||
|
* @category Lang
|
||
|
* @param {Array|Object|string} value The value to inspect.
|
||
|
* @returns {boolean} Returns `true` if `value` is empty, else `false`.
|
||
|
* @example
|
||
|
*
|
||
|
* _.isEmpty(null);
|
||
|
* // => true
|
||
|
*
|
||
|
* _.isEmpty(true);
|
||
|
* // => true
|
||
|
*
|
||
|
* _.isEmpty(1);
|
||
|
* // => true
|
||
|
*
|
||
|
* _.isEmpty([1, 2, 3]);
|
||
|
* // => false
|
||
|
*
|
||
|
* _.isEmpty({ 'a': 1 });
|
||
|
* // => false
|
||
|
*/
|
||
|
function isEmpty(value) {
|
||
|
if (value == null) {
|
||
|
return true;
|
||
|
}
|
||
|
if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||
|
||
|
(isObjectLike(value) && isFunction(value.splice)))) {
|
||
|
return !value.length;
|
||
|
}
|
||
|
return !keys(value).length;
|
||
|
}
|
||
|
|
||
|
module.exports = isEmpty;
|