Dada una cadena, se supone que debo convertir todas las letras minúsculas en mayúsculas y viceversa. Intenté esto y no puedo entender por qué está mal. El resultado me da: No se puede leer la propiedad .toLowerCase() de undefined.
function SwapCase(str) { let cap=str.toUpperCase let low=str.toLowerCase let arr=str.split("") let result=[] for(var i=0; i<=arr.length;i++){ for(var j=0; j<=cap.length;j++){ for( var k=0; k<=low.length;k++){ if(arr[i]===cap[j]){ result.push(arr[i].toLowerCase()) } if(arr[i]===low[k]){ result.push(arr[i].toUpperCase()) } } } } return result.join(" ") }Hay varios problemas con este código,
La matriz no debe extenderse demasiado, por lo que debe ser < en lugar de <=
No hay necesidad de 3 bucles
result.join debe unirse con una cadena vacía en lugar de un espacio en blanco
Las intenciones están por todas partes.
ver el código corregido a continuación:
function SwapCase(str) { let cap=str.toUpperCase() let low=str.toLowerCase() let arr=str.split("") let result=[] for(var i=0; i<arr.length;i++){ if(arr[i]===cap[i]){ result.push(arr[i].toLowerCase()) } if(arr[i]===low[i]){ result.push(arr[i].toUpperCase()) } } return result.join("") } console.log(SwapCase("heLLo"))