Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida sobre o desafio 2 para mais recursos de flexibilidade

Olá equipe Alura,

Eu nestou com algumas dúvidas sobre o desafio "Pergunte ao usuário qual é o dia da semana. Se a resposta for "Sábado" ou "Domingo", mostre "Bom fim de semana!". Caso contrário, mostre "Boa semana!".

Notei que se houver diferença de letras maíusculas o resultado final não sai como o esperado na comparação IF, então para tonar a comparação case insensitive, eu encontrei um recurso que é após a váriavel, adicionar .toLowerCase(), mas tive que adicionar três sinais de iguais (===) para realizar a comparação.

  1. Eu gostaria de entender melhor o motivo de precisar de três sinais?
  2. Como eu poderia fazer para ignorar acentuação, por exemplo comparar Sábado == Sabado, e ter um resultado verdadeiro. No meu códifgo adicionei isso manualmente.
  3. E qual seria o melhor método para permitir comparação no dia da semana com o acréscimo de "feira", por exemplo Segunda* == Segunda-Feira, e retornar verdadeiro... Nessa altura do curso eu pensei em adicionar manualmente, mas acredito que deva ter um jeito mais simples e inteligente rsrs.

Abaixo o meu código, e desde já agradeço pela atenção :)

Codigo Desafio2 dia da Semana - Gabriel

2 respostas
solução!

Olá Gabriel! Tudo bem?

Vamos lá, vou tentar esclarecer suas dúvidas:

  1. Três sinais de iguais (===): Em JavaScript, o operador === é usado para comparação estrita. Isso significa que ele compara tanto o valor quanto o tipo dos operandos. Usar == realiza uma comparação frouxa, que pode levar a resultados inesperados devido à coerção de tipos. Por isso, é mais seguro usar === para garantir que tanto o valor quanto o tipo sejam exatamente iguais.

  2. Ignorar acentuação: Para comparar strings ignorando acentuação, você pode usar a função normalize junto com uma expressão regular. Veja um exemplo:

    function removeAcentos(texto) {
        return texto.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
    }
    
    let diaSemana = prompt('Qual é o dia da semana?');
    let diaSemAcento = removeAcentos(diaSemana.toLowerCase());
    
    if (diaSemAcento === 'sabado' || diaSemAcento === 'domingo') {
        alert('Bom fim de semana!');
    } else {
        alert('Boa semana!');
    }
    
  3. Comparação com "feira": Para permitir a comparação com ou sem "feira", você pode usar a função includes para verificar se a string contém a palavra "feira". Veja um exemplo:

    let diaSemana = prompt('Qual é o dia da semana?').toLowerCase();
    
    if (diaSemana.includes('feira')) {
        diaSemana = diaSemana.split('-')[0]; // Remove o "-feira"
    }
    
    if (diaSemana === 'sabado' || diaSemana === 'domingo') {
        alert('Bom fim de semana!');
    } else {
        alert('Boa semana!');
    }
    

No caso você juntaria essas duas abordagens em seu código para adicionar todas as funcionalidades que deseja.

Espero ter ajudado. Em caso de dúvidas, conte com o apoio do fórum :)

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Realmente me ajudou muito, e seus comentários enriqueceu ainda mais o contúdo do curso... O resultado foi super eficiente combinando os dois métodos sugeridos. Super obrigado pelos esclarecimentos :)

Resolução desafio 2 mais otimizado