Hola, estoy trabajando en un script por puro entretenimiento. Este script sirve, en teoría, para que el usuario introduzca un texto, de más o menos carácteres, en un input, y de este texto se seleccionen x letras para ponerlas en mayúsculas. El problema está en que uso varios bucles para recorrer arrays y carácteres, aquí el código:
Código Javascript
:
Ver original<script type="text/javascript">
function alternar(t1, t2){
var txt = t1.value;
var aceptados = /[A-z]/;
var letras = new Array();
for (a = 0; a<txt.length; a++){
if(aceptados.test(txt.charAt(a))){
letras[letras.length] = a;
}
}
var cant = Math.round(Math.random()*letras.length);
var aleat = new Array();
for (b = 0; b<cant; b++){
aleat[b] = Math.round(Math.random()*letras.length);
}
for(i = 0; i<cant; i++){
for(j = 0; j<cant; j++){
if(aleat[i]==aleat[j] && i!=j){
if(aleat[j]<letras.length){
aleat[j] += 1;
}else{
aleat[j] -= 1;
}
}
}
}
var result = '';
for(t = 0; t<txt.length; t++){
if(!(aceptados.test(txt.charAt(t)))){
result += txt.charAt(t);
}else{
for(l = 0; l<letras.length; l++){
for(r = 0; r<aleat.length; r++){
if(letras[l] == aleat[r]){
result += txt.charAt(letras[l]).toUpperCase();
}else{
result += txt.charAt(letras[l]);
}
}
}
}
}
t2.value = result;
}
</script>
La cuestión es que si yo por ejempplo pongo 'abc123' (con 3 mayúsculas y posiciones 2, 2 y 3) sale 'aaabbbccCaaabbbccCaaabbbccC123'. Sé que tiene que ser por los bucles porque se repite parte del string pero lo he revisado 40 veces y todavía no logro ver dónde está el error. A ver si me podéis ayudar.
Saludos y gracias :D