Estoy escribiendo un programa que elimina las vocales del parámetro str y he decidido usar una declaración de cambio para lograr este objetivo. Soy bastante malo explicando cosas, así que te daré un ejemplo:
Sin ofender, pero,\nTu escritura es una de las peores que he leído
Debe convertirse
N ffns bt,\nYr wrtng s mng th wrst 'v vr rd
Pero mi salida se ve así:
N ffns bt,\nT u r wrtng s mng th wrst 'v vr r a d
El programa decidió dejar "u" y "a" por alguna razón. Después de casi 1,5 h de buscar una causa, me rindo porque, literalmente, no tengo ni idea de lo que hice mal.
function disemvowel(str) { let arr = str.split(''); // str -> arr for (let x = 0; x <= arr.length; x++) { // remove vowels switch(arr[x]) { case "a": case "e": case "i": case "o": case "u": case "A": case "E": case "I": case "O": case "U": arr.splice(x, 1); break; } } str = arr.join([separator = '']) // arr -> str return str; }La longitud de la matriz cambia después de cada splice . Puede definir la length al principio y disminuir x cada vez que elimine un elemento:
function disemvowel(str) { let arr = str.split(''); // str -> arr const length = arr.length; for (let x = 0; x < length; x++) { // remove vowels switch(arr[x]) { case "a": case "e": case "i": case "o": case "u": case "A": case "E": case "I": case "O": case "U": arr.splice(x, 1); x--; break; } } str = arr.join([separator = '']) // arr -> str return str; } console.log( disemvowel("No offense but,\nYour writing is among the worst I've ever read") );