Executando verificação de segurança...
2

Dúvida JS: como filtrar apenas arrays de uma chave de um objeto?

Eu quero filtrar apenas dados de um mês dentro de um array, como faço? Está assim meu codigo:

let dadosJSON = [
    {
        janeiro: [
        {nome: 'Usuário1', salario: 1920, cidade: 'SL'},
        {nome: 'Usuário2', salario: 2220, cidade: 'SL'},
        {nome: 'Usuário3', salario: 2130, cidade: 'NH'},
        ],
        fevereiro: [
        {nome: 'User1', salario: 9932, cidade: 'Caxias'},
        {nome: 'User2', salario: 9832, cidade: 'Alagoas'},
        {nome: 'User3', salario: 9942, cidade: 'Macapá'},
        ],
    }
]
Carregando publicação patrocinada...
2

Pelo jeito que o seu objeto está estruturado onde tem um array de objetos e cada objeto desse tem uma propriedade em que a chave dele é o nome do mês, o modo de pegar o valor de um mês específico é:

dadosJSON[INDEX_DO_OBJETO_A_SER_FILTRADO][NOME_DO_MES]

Um exemplo seria:

dadosJSON[0]['janeiro']

Que traria como resultado:

[
   {nome: 'Usuário1', salario: 1920, cidade: 'SL'},
   {nome: 'Usuário2', salario: 2220, cidade: 'SL'},
   {nome: 'Usuário3', salario: 2130, cidade: 'NH'},
]
1

Se os dados estão estruturados dessa forma e você não tem como mudar, eu diria algo assim:

const monthToFilter = 'janeiro'
Object.entries(dadosJSON[0]).filter(([key, value]) => key === monthToFilter)
1

Fala dev, bão?
Darei uma dica antes, vc não precisa passar apenas um objeto pra dentro de um array, a ideia de arrays são para iterar sobre seus items, nesse caso tem apenas um objeto com suas propriedades, logo sua variável dadosJSON pode receber somente o objeto em si e você poderá acessar os meses através de sua propriedade.

Ex.: dadosJSON.fevereiro ou dadosJSON['fevereiro']

Agora caso seu array tivesse mais de um objeto e pudesse iterar sobre os mesmos ficariam assim:

let dadosJSON = [
    {
      janeiro: [
        { nome: 'Usuário1', salario: 1920, cidade: 'SL' },
        { nome: 'Usuário2', salario: 2220, cidade: 'SL' },
        { nome: 'Usuário3', salario: 2130, cidade: 'NH' },
      ],
    },
    {
      fevereiro: [
        { nome: 'User1', salario: 9932, cidade: 'Caxias' },
        { nome: 'User2', salario: 9832, cidade: 'Alagoas' },
        { nome: 'User3', salario: 9942, cidade: 'Macapá' },
      ],
    },
  ]
  const mes = dadosJSON.filter(dados => !!dados['fevereiro']) // retorna o mes em um array
  ou
  const mes = dadosJSON.find(dados => !!dados['fevereiro']) // retorna o mes em si que seria o próprio objeto

Espero ter ajudado, abraço!

1
1