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
Profile picture of Arne Hartherz
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)