javascriptarraysfilter

Removing undefined values from Array


In certain situations, it may happen that we have undefined or generally falsy values in Array structures. For instance when reading and filling data from some unknown sources like Databases or HTML structures. Like

var data = [42, 21, undefined, 50, 40, undefined, 9]

Since that might cause trouble when looping over such arrays and working on the elements, what is the best practice to remove undefined (falsy values) ?


Solution

  • To use Array.prototype.filter here might be obvious. So to remove only undefined values we could call

    var data = [42, 21, undefined, 50, 40, undefined, 9];
    
    data = data.filter(function( element ) {
       return element !== undefined;
    });
    

    If we want to filter out all the falsy values (such as 0 or null) we can use return !!element; instead.

    But we can do it slighty more elegant, by just passing the Boolean constructor function, respectively the Number constructor function to .filter:

    data = data.filter( Number );
    

    That would do the job in this instance, to generally remove any falsy value, we would call

    data = data.filter( Boolean );
    

    Since the Boolean() constructor returns true on truthy values and false on any falsy value, this is a very neat option.