Olá, Eduardo. Tudo bem?
Agradeço por compartilhar seu código com a comunidade.
A sua solução não está errada em usar o for, mas do jeito que o código está hoje, a lógica acaba gerando um comportamento incorreto. O principal problema é que o laço não é interrompido quando a senha correta é encontrada, então mesmo após exibir “Acesso permitido!”, o código continua executando e pode acabar mostrando a mensagem de “Acesso bloqueado”, o que não deveria acontecer.
Outro ponto é que a verificação if (i === 2) força a mensagem de bloqueio a aparecer na última iteração, independentemente de o usuário já ter acertado a senha antes.
Usando o seu próprio código, uma correção simples seria controlar o fluxo e interromper o laço quando o acesso for liberado:
const tentativas = ["1234", "admin", "secreto"];
const senhaCorreta = "secreto";
let acessoLiberado = false;
for (let i = 0; i < tentativas.length && i < 3; i++) {
if (tentativas[i] === senhaCorreta) {
console.log("Acesso permitido!");
acessoLiberado = true;
break;
} else {
console.log(`Tentativa ${i + 1} inválida`);
}
}
if (!acessoLiberado) {
console.log("Acesso bloqueado. Número máximo de tentativas atingido.");
}
Assim, quando a senha correta é encontrada, o break encerra o laço imediatamente, evitando mensagens indevidas. Esse ajuste deixa seu for funcional e coerente com o objetivo da atividade.
Espero que eu tenha conseguido te ajudar.
Conte com o fórum sempre que precisar.
Abraços e bons estudos! ✨