Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Ensure that a javascript object is an array, coerce if necessary. Move error checking out of your node.js javascript code.
Branch: master

switch from tap to mocha and use universal module def so will be

compatible with node.js and the browser
latest commit 7c6a9b8b59
@jeffbski authored


Simple convenience function which ensures that you are dealing with an array and you can eliminate noise from your code.

For Example:

  var array = require('ensure-array');

  function foo(bar) {
    array(bar).forEach(function (x) {
      //do something with each item

Instead of doing something like this:

  function foo(bar) {
    if (bar === undefined) return;
    if (bar === null) return;
    if (!Array.isArray(bar)) bar = [bar];
    bar.forEach(function (x) {
      //do something with each item


It gets rid of the noise and coerces what is provided into an array, so you do not have to litter your code with a bunch of extraneous checks.

Here is the logic behind the function:

  1. if nothing passed to the function return empty array []
  2. if single argument passed is undefined or null return empty array []
  3. if single argument passed is already an array, return it unchanged
  4. otherwise return array containing all of the arguments

Here is the actual code which makes it happen

 module.exports = function array(a, b, n) {
  if (arguments.length === 0) return [];            //no args, ret []
  if (arguments.length === 1) {                     //single argument
    if (a === undefined || a === null) return [];   //  undefined or null, ret []
    if (Array.isArray(a)) return a;                 //  isArray, return it
  return;     //return array with copy of all arguments


  npm install ensure-array


  var array = require('ensure-array');  // get handle to the function
  var foo = array(whatever);               // foo will now safely be an array


  • 2011-12-08 - 0.0.4 - Update tapr / tap versions
  • 2011-12-01 - 0.0.3 - Updated to support any version of Node.js



  • Author: Jeff Barczewski (@jeffbski)


Something went wrong with that request. Please try again.