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

91
Visualizações
Establezca cero para datos faltantes en una matriz de objetos

Tengo las siguientes matrices de objetos, por ejemplo:

 const data = [ { date: '01-01', products: [ { id: 1, value: 6, label: 'Product 1' }, { id: 2, value: 3, label: 'Product 2' } ] }, { date: '02-01', products: [ { id: 1, value: 4, label: 'Product 1' }, ] }, { date: '03-01', products: [ { id: 1, value: 11, label: 'Product 1' }, { id: 2, value: 15, label: 'Product 2' } ] } ]

Luego hago la agrupación y obtengo el siguiente resultado:

 const output = [ { id: 1, name: 'Product 1', data: [6, 4, 11] }, { id: 2, name: 'Product 2', data: [3, 15] } ]

El problema con la solución es que no puedo tener en cuenta el valor faltante (el objeto con la fecha "02-01" no tiene un objeto con id: 2). Necesito verificar que el objeto no existe y sustituir cero en lugar del valor faltante. ¿Quizás sabes cómo hacerlo?

Código de solución a continuación:

 const result = data.map(e => e.products).flat().reduce((acc, product) => { const index = acc.findIndex(item => item.id === product.id); if(index === -1) { acc.push({ id: product.id, name: product.label, data: [product.value] }) return acc; } const findIndex = acc[index].data.findIndex((innerNode) => innerNode.id === product.id); if (findIndex === -1) { console.log(product.value) acc[index].data.push(product.value); return acc; } return acc; }, []);

Resultado Esperado:

 const output = [ { id: 1, name: 'Product 1', data: [6, 4, 11] }, { id: 2, name: 'Product 2', data: [3, 0, 15] } ]
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puedes hacer esto en tres pases:

  • primero, encuentras todas las fechas. Cuando encuentre un producto por primera vez, establecerá todos sus valores en 0 para cada una de esas fechas.
  • luego, itera los productos y se asegura de que, para cada fecha, tengan un valor, que será cero de forma predeterminada.
  • finalmente, formatea la salida.

 const data = [ { date: '01-01', products: [ { id: 1, value: 6, label: 'Product 1' }, { id: 2, value: 3, label: 'Product 2' } ] }, { date: '02-01', products: [ { id: 1, value: 4, label: 'Product 1' }, ] }, { date: '03-01', products: [ { id: 1, value: 11, label: 'Product 1' }, { id: 2, value: 15, label: 'Product 2' } ] } ] // goal is to fill this for each product let dateToValues = data.map(d => [d.date, 0]); // build map of product-id to values-for-each-date let products = new Map(); data.forEach(d => d.products.forEach(p => { let values = products.get(p.id)?.data; if (values === undefined) { values = new Map(dateToValues); // a copy products.set(p.id, {label: p.label, data: values}); } values.set(d.date, p.value); })) // generate output, skipping dates and only showing their values let output = []; products.forEach((v, id) => output.push({ id: id, name: v.label, data: [... v.data.values()]})); console.log(output)

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