ksa,
В этом случае создаётся новый массив, а удалить надо из заданного. Вдруг он связывает несколько замыканий и необходимо на них повлиять одинаково. Или может в нём есть нечисловые поля и надо сохранить его поведение. Иначе, я бы рекомендовал не splice а нечто наподобие этого:
var arr = [
"dd123",
"dd322",
"dd453",
"gg444",
"gg554",
"dd789"
];
alert(JSON.stringify(arr.filter(function(str){
return !(/^dd.*$/.test(str));
})));
Хотя, можно проделать и такое:
var tmp = arr.filter(function(str){
return !(/^dd.*$/.test(str));
});
arr.length = 0;
[].push.apply(arr, tmp);