Можно ещё сдвинуть нужные элементы в начало массива и обрезать его
function deleteEmpty(arr)
{
var n = arr.length, k = 0;
for (var i = 0; i < n; i++)
{ if (arr[i] !== undefined) arr[k++] = arr[i]; }
arr.length = k;
return arr;
}
alert( deleteEmpty([,,,44,33,,'DAaaa']) );
P.S. Надо потестировать, что быстрей удаляет. Обычно filter медленнее.