кстати вариант ускоренный на 35%, мо медленнее 1го в 14 =))) раз:

Код:
function killNewlines(txt){
var newTxt = "";
var flag = false;
var i = txt.length;
while(i--){
if(txt.charCodeAt(i)>33) {
newTxt += txt.charAt(i);
flag = false;
continue;
} else if(!flag&&(txt.charAt(i) == "\n" || txt.charAt(i) == "\r")){
newTxt += newline;
flag = true;
continue;
}
}
return newTxt
}
блин, не так сказал, дубликаты не киляются. пустые киляются.
\n\n\n становится \n
\n\n тоже \n
а у тя \n\n\n станет \n\n (что, по сути, баг)
вот в этом преимущество...