Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

297
Visualizações
¿Es posible filtrar el objeto anidado por el valor de alguna propiedad? (JS)

Estoy desarrollando mi propio proyecto con JS, python y datos de API abierta. Traer datos de API no fue tan complicado incluso para un novato como yo. Sin embargo, tuve problemas (como siempre) para convertir los datos en información útil para mí.

a continuación hay una parte con la que estoy teniendo problemas,

 AA:array(60) [ 0:{A:2016-01-01, B:12} 1:{A:2016-02-01, B:122} 2:{A:2016-03-01, B:162} 3:{A:2016-04-01, B:129} . . . n:{A:20NN-NN-NN, B:923} ]

como puede ver, es una matriz que tiene muchos objetos. cada objeto tiene la misma clave de propiedad A, BA es literal que tiene información de fecha y B tiene algún valor numérico. Lo que quiero hacer es crear nuevos objetos que tengan información del año. en otras palabras, el nuevo objeto tiene la misma información de mes y día y solo el año es diferente en A. Y B sería la suma de B del mismo año (perdón por explicar mal que no soy bueno en inglés ngl). entonces el ejemplo anterior sería como el siguiente.

 newAA: array(5) [ 0:{A:2016-01-01, B:numeric value(sum of all 2016's B in above example)} 1:{A:2017-01-01, B:numeric value(sum of all 2017's B in above example)} 2:{A:2018-01-01, B:numeric value(sum of all 2018's B in above example)} 3:{A:2019-01-01, B:numeric value(sum of all 2019's B in above example)} 4:{A:2020-01-01, B:numeric value(sum of all 2020's B in above example)} ]

Honestamente, esto es bastante complicado para mí y no sé cómo manejarlo para convertirlo en lo que quiero. Si tiene una buena idea para hacer esto, hágamelo saber, su ayuda será apreciada.

¡gracias por leer!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Usando Array#reduce , puede iterar sobre la matriz mientras actualiza un Map donde el year es la key y un objeto es el value .

El resultado serían los valores de este Mapa, que es una lista de objetos agrupados por el year que contiene su primer A en la matriz original y el total B :

 const AA = [ {A:'2016-01-01', B:12}, {A:'2016-02-01', B:122}, {A:'2016-03-01', B:162}, {A:'2016-04-01', B:129} ]; const res = [... AA.reduce((map, { A, B }) => { const [year] = A.split('-'); const yearRecord = map.get(year); if(yearRecord) yearRecord.B += B; else map.set(year, { A, B }) return map; }, new Map) .values() ]; console.log(res);

EDITAR: la misma solución usando el objeto:

 const AA = [ {A:'2016-01-01', B:12}, {A:'2016-02-01', B:122}, {A:'2016-03-01', B:162}, {A:'2016-04-01', B:129} ]; const res = Object.values( AA.reduce((map, { A, B }) => { const [year] = A.split('-'); const yearRecord = map[year]; if(yearRecord) yearRecord.B += B; else map[year] = { A, B }; return map; }, {}) ); console.log(res);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda