Extending the native Array prototype
Code
javascript
Array.prototype.clean = function(deleteValue) { for (var i = 0; i < this.length; i++) { if (this[i] == deleteValue) { this.splice(i, 1); i--; } } return this; };
Usage
javascript
test = new Array("","One","Two","", "Three","","Four").clean(""); test2 = [1,2,,3,,3,,,,,,4,,4,,5,,6,,,,]; test2.clean(undefined);
Pure Javascript
Description
You can simply push the existing elements into other array (the example removes every “falsy” value: undefined, null, 0, false, NaN and ”).
Code
javascript
function cleanArray(actual){ var newArray = new Array(); for(var i = 0; i<actual.length; i++){ if (actual[i]){ newArray.push(actual[i]); } } return newArray; }
Usage
javascript
var result = cleanArray([1,2,,3,,3,,,,,,4,,4,,5,,6,,,,]);
Simple
Description
If you’ve got Javascript 1.6 or later you can use Array.filter
using a trivial return true
callback function.
Since .filter
automatically skips missing elements in the original array.
The MDN page linked above also contains a nice error-checking version of filter that can be used in JavaScript interpreters that don’t support the official version.
Note that this will not remove null entries nor entries with an explicit undefined value, but the OP specifically requested “missing” entries.
Code
javascript
arr = arr.filter(function() { return true; });
javascript
arr = arr.filter(function(n) { return n != undefined; });
javascript
// only for arrays items which are numbers is numbers strings arr = arr.filter(Number)
javascript
[1, false, "", undefined, 2].filter(Boolean); // [1, 2]
javascript
// only for single array items of type text ['','1','2',3,,'4',,undefined,,,'5'].join('').split('');
JQuery
Code
javascript
arr = $.grep(arr, function(n){ return n; });
Underscope
Code
javascript
_.filter([1, false, "", undefined, 2], Boolean); // [1, 2]
javascript
_.compact([1, false, "", undefined, 2]); // [1, 2]
Cool Way
Description
Using ES6. IE support for filter is IE9 standards mode.
Code
javascript
var arr = [1,2,null, undefined,3,,3,,,0,,,4,,4,,5,,6,,,,]; var temp = []; for(let i of arr) { // copy each non-empty value to the 'temp' array i && temp.push(i); } arr = temp; delete temp; // discard the variable arr // [1, 2, 3, 3, 4, 4, 5, 6]
Iteration
Code
javascript
var arr = [1,2,null, undefined,3,,3,,,0,,,[],,{},,5,,6,,,,]; var len = arr.length, i; for(i = 0; i < len; i++ ) { // copy non-empty values to the end of the array arr[i] && arr.push(arr[i]); } // cut the array and leave only the non-empty values arr.splice(0 , len); arr // [1,2,3,3,[],Object{},5,6]