Mi código tiene un valor de índice que apunta a un carácter en una cadena y tengo que reemplazar todas las instancias de ese carácter con el valor anterior y el siguiente valor alternativamente, excepto el valor del carácter de índice dado. A continuación se muestra mi código para implementar esto:
function replaceChar(string,idx){ a = string[idx] b= [] pre_val = string[idx - 1] post_val = string[idx + 1] for(let i=0; i< string.length ; i++){ if(i==idx){ continue } if (string[i]===a){ b.push(i) } } for(i=0; i<b.length; i++){ if (i%2==0){ string = string.replace( string[b[i]],pre_val) } if (i%2==1){ string = string.replace(string[b[i]],post_val) } } return string }La entrada dada es:
console.log(replaceChar('Baddy',2))La salida preferida es:
BadayLo que obtengo es:
Baady string = string.replace( string[b[i]],pre_val)=> El valor de b[i] en la declaración anterior es 3, por lo que la cadena[3] debe reemplazarse con a (el valor anterior) y la salida debe ser Baday. No estoy seguro de qué está mal.
Dado que desea reemplazar un carácter en un índice determinado y está realizando múltiples reemplazos (potencialmente), puede usar una matriz en su lugar (temporalmente):
let tmp = string.split(''); //from string into array for(let i = 0; i<b.length; i++){ if (i%2==0){ tmp[b[i]] = pre_val; } if (i%2==1){ tmp[b[i]] = post_val; } } return tmp.join('') //back into a stringAdemás, debe declarar sus otras variables correctamente.
let a = string[idx] let b = [] let pre_val = string[idx - 1] let post_val = string[idx + 1]