AntonMs,
значит у тебя как-то не так изменяется массив. У меня всё работает.
var a = [];
for (var i = 0; i< 5; i++) {
a.push('undefined' + i);
}
a.push('text');
a.push('next text');
a = a.filter(function(string) {
return string.indexOf("undefined") == -1;
});
alert(a);
В каком браузере тестируешь?