Removing undefined values from Array

Solution 1:

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.

Solution 2:

Inline using lambda

result.filter(item => item);

Solution 3:

You can use lodash compact method, which removes null, undefined and ''

_.compact(data)

Solution 4:

ES6 single line

data.filter(e => e)

Solution 5:

If you have an array of objects and want to remove all null and undefined items:

[].filter(item => !!item);