LoDash: isBlank and isPresent mixins

Updated . Posted . Visible to the public.

When you need to check a value for presence, don't rely on JavaScript since it considers 0 or "0" false. Also don't rely on LoDash's _.isEmpty:

if ('0') { ... } // false
if (0) { ... } // false

^
if (!.isEmpty('0')) { ... } // true (= good)
if (!
.isEmpty(0)) { ... } // false (= not good)

This is because isEmpty it is only meant for objects with a length Show archive.org snapshot .

While the name implies that it's meant only for collections, you probably still want something like isBlank or isPresent that return true/false for objects humans would normally consider blank or present.

Here is some CoffeeScript that provides _.isBlank and _.isPresent via LoDash/Underscore.js mixins:

_.mixin
  isBlank: (object) ->
    switch typeof object
      when 'boolean' then false
      when 'function' then false
      when 'number' then isNaN(object)
      else _.isEmpty(object)
  isPresent: (object) ->
    !_.isBlank(object)
,
  chain: false

Use them like this:

_.isBlank(0) // false
_.isBlank(23) // false
_.isBlank('') // true

^
_.isPresent(null) // false
_.isPresent(NaN) // false

The chain: false option above also allows to use them as terminal methods:

_(23).isBlank() // false
_(23).isPresent() // true
Arne Hartherz
Last edit
Henning Koch
License
Source code in this card is licensed under the MIT License.
Posted by Arne Hartherz to makandra dev (2014-11-13 16:11)