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

115
Visualizações
Accumulate value by types in objects

I have an array containing objects for each object has a different type (wall type). I am trying to accumulate the total value for each area in order to check the total area for each wall:

const walls = [
  {
    typeName: "Sandwichelement - 480mm",
    area: 28.165,
  },
  {
    typeName: "Sandwichelement - 480mm",
    area: 22.165,
  },
  {
    typeName: "Beton vægelement - 150mm",
    area: 89.15,
  },
  {
    typeName: "Beton vægelement - 150mm",
    area: 165,
  },
  {
    typeName: "Fundament - 900mm",
    area: 45.2,
  },
  {
    typeName: "Fundament - 900mm",
    area: 16.5,
  },
];

const result = walls.reduce((acc, val) => {
  acc[val.typeName] = { totalArea: 0 };

  acc[val.typeName]["totalArea"] += val.area;

//the result:
//{
//"Beton vægelement - 150mm": {totalArea: 254.15},
//"Fundament - 900mm": {totalArea: 61.7},
//"Sandwichelement - 480mm": {totalArea: 50.33}
//}

  return acc;
}, {});

console.log(result);

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

0

Iterate through it and update a result object:

const result = {};

for (const {typeName, area} of walls) {
    if (!result[typeName]) {
        result[typeName] = {totalArea: 0};
    }

    result[typeName].totalArea += area;
}

console.log(result);
/*
{
"Beton vægelement - 150mm": {totalArea: 254.15},
"Fundament - 900mm": {totalArea: 61.7},
"Sandwichelement - 480mm": {totalArea: 50.33}
}
*/

const walls = [
  {
    typeName: "Sandwichelement - 480mm",
    area: 28.165,
  },
  {
    typeName: "Sandwichelement - 480mm",
    area: 22.165,
  },
  {
    typeName: "Beton vægelement - 150mm",
    area: 89.15,
  },
  {
    typeName: "Beton vægelement - 150mm",
    area: 165,
  },
  {
    typeName: "Fundament - 900mm",
    area: 45.2,
  },
  {
    typeName: "Fundament - 900mm",
    area: 16.5,
  },
];

const result = {};

for (const {typeName, area} of walls) {
    if (!result[typeName]) {
        result[typeName] = {totalArea: 0};
    }

    result[typeName].totalArea += area;
}

console.log(result);
/*
{
"Beton vægelement - 150mm": {totalArea: 254.15},
"Fundament - 900mm": {totalArea: 61.7},
"Sandwichelement - 480mm": {totalArea: 50.33}
}
*/

about 4 years ago · Juan Pablo Isaza Relatório

0

You have only to iterate your walls array. In my case i use a foreach loop and add the objects with the totals to it.

const walls = [
  {
    typeName: "Sandwichelement - 480mm",
    area: 28.165,
  },
  {
    typeName: "Sandwichelement - 480mm",
    area: 22.165,
  },
  {
    typeName: "Beton vægelement - 150mm",
    area: 89.15,
  },
  {
    typeName: "Beton vægelement - 150mm",
    area: 165,
  },
  {
    typeName: "Fundament - 900mm",
    area: 45.2,
  },
  {
    typeName: "Fundament - 900mm",
    area: 16.5,
  },
];

const s = {};
walls.forEach((val) => {
  if (! s[val.typeName]){
    s[val.typeName] = { totalArea: 0 };
    s[val.typeName]["totalArea"] += val.area;     } else {
      s[val.typeName]["totalArea"] += val.area;
  }
    
});

console.log("sum", s)

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