Buen problema
AdRiAnCeTe!
Ahí va mi idea gracias a las expresiones regulares:
Código:
function quitaRepes(str) {
while( (reg=/(\d+;)((\d+;)*)\1/g).test(str)===true )
str = str.replace(reg, "$1$2");
return str;
}
var str = "1;1;2;1;3;1;4;2;3;4;5;2;6;4;7;3;2;5;7;3;4;1;5;8;2;4;6;9;3;4;1;";
document.write( str +"<br/>" );
document.write( quitaRepes(str) );
Su salida:
Cita: 1;1;2;1;3;1;4;2;3;4;5;2;6;4;7;3;2;5;7;3;4;1;5;8;2; 4;6;9;3;4;1;
1;2;3;4;5;6;7;8;9;
Claro que es más complicada, pero supongo que más eficiente. Si alguien se atreve a eliminar el while ese recibirá un aplauso de mi parte, pero que yo sepa no se puede por la propia forma de trabajar de las expresiones regulares, que lo mirado, mirado lo dejan y siguen adelante.
Un saludo