diff --git a/index.js b/index.js index a156092..37f27f6 100644 --- a/index.js +++ b/index.js @@ -163,12 +163,10 @@ is.inRange = (x, range) => { is.infinite = x => x === Infinity || x === -Infinity; -is.empty = value => { - return ( - ((is.string(value) || is.array(value)) && !value.length) || - (!is.map(value) && !is.set(value) && is.object(value) && !Object.keys(value).length) || - ((is.map(value) || is.set(value)) && !value.size) - ); -}; +const isEmptyStringOrArray = x => (is.string(x) || is.array(x)) && x.length === 0; +const isEmptyObject = x => !is.map(x) && !is.set(x) && is.object(x) && Object.keys(x).length === 0; +const isEmptyMapOrSet = x => (is.map(x) || is.set(x)) && x.size === 0; + +is.empty = x => !x || isEmptyStringOrArray(x) || isEmptyObject(x) || isEmptyMapOrSet(x); module.exports = is; diff --git a/readme.md b/readme.md index e9b250a..8c9a29e 100644 --- a/readme.md +++ b/readme.md @@ -152,7 +152,7 @@ Check if `value` is `Infinity` or `-Infinity`. ##### .empty(value) -Returns `true` if `value` is an empty string, array, object, map, or set. +Returns `true` if `value` is falsy or an empty string, array, object, map, or set. ## FAQ diff --git a/test.js b/test.js index 39b1a50..336bc45 100644 --- a/test.js +++ b/test.js @@ -375,6 +375,12 @@ test('is.infinite', t => { }); test('is.empty', t => { + t.true(m.empty(null)); + t.true(m.empty(undefined)); + + t.true(m.empty(false)); + t.false(m.empty(true)); + t.true(m.empty('')); t.false(m.empty('🦄'));