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);