He estado tratando de usar un ciclo for para hacer un código que alterna entre dos cadenas y termina con .toUpperCase , pero estoy completamente atascado. Soy "capaz" de hacerlo con una matriz con dos cadenas (y aun así tiene un error, ya que termina con la primera cadena de la matriz...), pero no con dos constantes separadas.
¿Alguien podría ofrecer ayuda?
function repeteFrases(num) { const frases = ["frase um", "frase dois"]; let result = ""; for (let i = 0; i < num; i++) { result += i === num - 1 ? frases[0].toUpperCase() : `${frases[0]}, ${frases[1]}, `; } return result; } console.log(repeteFrases(2));Para alternar entre dos estados se puede utilizar la paridad del índice, es decir, la condición sería i % 2 == 0 , así:
function repeteFrases(num) { const frases = ["frase um", "frase dois"]; let result = ""; for (let i = 0; i < num; i++) { result += i % 2 == 0 ? frases[0].toUpperCase() : `${frases[0]}, ${frases[1]}, `; } return result; } console.log(repeteFrases(5));Usa frases[i % frases.length] para alternar las frases (cualesquiera que sean )
function repeteFrases(num) { const frases = ["frase um", "frase dois"]; let result = ""; for (let i = 0; i < num; i++) { const next = frases[i % frases.length]; const isLast = (i === num - 1); result += isLast ? next.toUpperCase() : `${next}, `; } return result; } console.log(repeteFrases(5));Ya casi lo tienes.. Creo que lo que estás pidiendo es repetir la frase uno o dos (alternando), y que la última versión esté en mayúsculas. Noté que alguien más hizo que su código fuera ejecutable, por lo que podría estar malinterpretándolo. Podemos probar par/impar usando el operador de módulo (%), que mantiene el acceso de frases en la posición 0 o 1. El otro truco es repetir hasta una frase menos de la necesaria y añadir la última en mayúsculas.
function repeteFrases(num) { const frases = ["frase um", "frase dois"]; //Only loop to 1 less than the expected number of phrases const n=num-1; let result = ""; for (let i = 0; i < n; i++) { //Note %2 means the result can only be 0 or 1 //Note ', ' is a guess at inter-phrase padding result+=frases[i%2] + ', '; } //Append last as upper case return result+frases[n%2].toUpperCase(); } console.log(repeteFrases(2)); console.log(repeteFrases(3));