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

Comparar array

tenho esse código, e queria que o if comparasse a data de hoje com as datas do array, que, no caso, são datas de feriados. Porém não está funcionando. Alguém consegue me ajudar?

<script>

let hoje = new Date()
const feriados = ['25/12/2022','15/11/2022','02/11/2022','12/10/2022','07/09/2022','16/06/2022','01/05/2022','21/04/2022','15/04/2022','01/03/2022','28/02/2022','01/01/2022','31/12/2021','25/12/2021','15/11/2021','02/11/2021','12/10/2021','07/09/2021','31/08/2021','03/06/2021','01/05/2021','21/04/2021','02/04/2021','16/02/2021','15/02/2021','01/01/2021', '06/07/2021'];
    //console.log(hoje);

if (feriados.indexOf(hoje)) {
  console.log("foi");
} else{
    console.log("não foi");
}


</script>
3 respostas

Posta o código aí pra dar uma olhada

Perdão, postei pelo celular e não tinha subido

solução!

Nesse caso, o hoje está recebendo o valor padrão do Date, por exemplo, se der um console.log(hoje); ele vai mostrar: Mon Jul 19 2021 22:15:05 GMT-0300 (Brasilia Standard Time)

Para comparar com o formato que você está utilizando que é o nosso, 'DD/MM/AAAA' vai precisar formatar no JavaScript também, que mesmo puxando só esses dados, ele vai trazer no formato padrão: 'YYYY-MM-DD'.

Você pode formatá-la conforme abaixo, aí sim poder comparar no teu if:

  let hoje = new Date()
  let data_formatada = ((hoje.getDate() )) + "/" + ((hoje.getMonth() + 1)) + "/" + hoje.getFullYear(); 

  console.log(hoje);
  console.log(data_formatada);

Se for trabalhar com esse padrão dela formatada, aconselho a tirar o '0' da frente, exemplo: '9/7/2021' e também manter uma função pra retornar a data formatada.

Beleza, agora para comparar com o array, só corrigir o seu if que ai o código fica assim:

  let hoje = new Date()
  let dataFormatada = ((hoje.getDate() )) + "/" + ((hoje.getMonth() + 1)) + "/" + hoje.getFullYear(); 
  console.log(dataFormatada);
  console.log(hoje);

  const feriados = ['25/12/2022','15/11/2022','02/11/2022','12/10/2022','07/09/2022','16/06/2022','01/05/2022','21/04/2022','15/04/2022','01/03/2022','28/02/2022','01/01/2022','31/12/2021','25/12/2021','15/11/2021','02/11/2021','12/10/2021','07/09/2021','31/08/2021','03/06/2021','01/05/2021','21/04/2021','02/04/2021','16/02/2021','15/02/2021','01/01/2021', '06/07/2021'];

  if(feriados.indexOf(dataFormatada) != -1) {
    console.log("foi");
  }
  else{
    console.log("não foi");
  }

O array.indexOf vai retornar -1 caso não encontre, por isso faz o (feriados.indexOf(dataFormatada) != -1), quando for diferente de -1 é por que encontrou.

Att.