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

279
Visualizações
How to find the minimum, maximum and average value of all property of array of objects

I have an array of objects with different values in it, I want to find the min, max, and average of the properties in that array

for eg if I have an array

const array = [{
    "a": "-0.06",
    "b": "0.25",
    "c": "-0.96",
    "d": "-0.14"
  },
  {
    "a": "-0.37",
    "b": "0.01",
    "c": "-0.77",
    "d": "-0.09"
  },
  {
    "a": "0.01",
    "b": "0.88",
    "c": "-0.53",
    "d": "-0.28"
  },
  {
    "a": "0.53",
    "b": "-0.62",
    "c": "0.02",
    "d": "0.74"
  },
  {
    "a": "0.79",
    "b": "-0.39",
    "c": "0.70",
    "d": "0.18"
  },
  {
    "a": "0.74",
    "b": "-0.14",
    "c": "0.22",
    "d": "-0.58"
  }
]

So the output will be as given below

const out = [{
  property: a,
  minValue: -0.37,
  maxValue: .79,
  avg: 0.2733333333333334
}, {
  property: b,
  minValue: -.62,
  maxValue: .88,
  avg: -0.0016666666666666496
}, {
  property: c,
  minValue: -.96,
  maxValue: .07,
  avg: -0.21999999999999997
}, {
  property: d,
  minValue: -.58,
  maxValue: .74,
  avg: -0.028333333333333332
}]

So to get the output we iterate to the array and find the minimum, maximum, and average value of a, b , c and d and store it in a new array

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

0

here is a two step approach. First i grouped the array on property using reduce. Then I performed a map on the grouped object to get the min, max and the average

const array = [{    "a": "-0.06",    "b": "0.25",    "c": "-0.96",    "d": "-0.14"  },  {    "a": "-0.37",    "b": "0.01",    "c": "-0.77",    "d": "-0.09"  },{    "a": "0.01",    "b": "0.88",    "c": "-0.53",    "d": "-0.28"  },  {    "a": "0.53",    "b": "-0.62",    "c": "0.02",    "d": "0.74"  },  {    "a": "0.79",    "b": "-0.39",    "c": "0.70",    "d": "0.18"  },  {    "a": "0.74",    "b": "-0.14",    "c": "0.22",    "d": "-0.58"  }]

const grouped = array.reduce((acc,curr) => {
    Object.entries(curr).forEach(([property,v])=>{
    acc[property] = acc[property] || []
    acc[property].push(+v) //+ for convert to a number before pushing
  })
  return acc
},{})

const out = Object.entries(grouped).map(([property,v]) => {
    return {
    property,
    minValue: Math.min(...v),  // min of an array. v is the array of numbers
    maxValue: Math.max(...v),  //max of an array
    avg: v.reduce((a, b) => a + b) / v.length //average of an array
  }
})

console.log(out)

about 4 years ago · Juan Pablo Isaza Relatório

0

Use the following function: `

const createNewObj = (previous, current) => ({
  minValue: Math.min(previous, current,
  maxValue: Math.max(previous, current,
  total: previous + current,
  length: previous.length + 1,
  avg: (previous + current) / (previous.length + 1)
})

const default = {
  minValue: 0,
  maxValue: 0,
  total: 0,
  length: 0,
  avg: 0
}

array.reduce((previous, current) => {
a: createNewObj(previous[a], current[a]), 
b: createNewObj(previous[b], current[b]), 
c: createNewObj(previous[c], current[c]), 
d: createNewObj(previous[d], current[d])
}
, {
a: default,
b: default, 
c: default, 
d: default
})

`

about 4 years ago · Juan Pablo Isaza Relatório

0

I have followed a two step process -

  1. Group the values of each property (using reduce for this)
  2. Loop through all the properties and compute the required result.

const array = [{    "a": "-0.06",    "b": "0.25",    "c": "-0.96",    "d": "-0.14"  },  {    "a": "-0.37",    "b": "0.01",    "c": "-0.77",    "d": "-0.09"  },{    "a": "0.01",    "b": "0.88",    "c": "-0.53",    "d": "-0.28"  },  {    "a": "0.53",    "b": "-0.62",    "c": "0.02",    "d": "0.74"  },  {    "a": "0.79",    "b": "-0.39",    "c": "0.70",    "d": "0.18"  },  {    "a": "0.74",    "b": "-0.14",    "c": "0.22",    "d": "-0.58"  }]

const out = [];

const newObj = array.reduce((prevValue, currValue) => {
  Object.keys(currValue).forEach((el) => {
    if (prevValue[el]) {
      prevValue[el].push(Number(currValue[el]));
    } else {
      prevValue[el] = [Number(currValue[el])];
    }
  });
  return prevValue;
}, {});

Object.keys(newObj).forEach((el) => {
  out.push({
    property: el,
    minValue: Math.min(...newObj[el]),
    maxValue: Math.max(...newObj[el]),
    avg: newObj[el].reduce((a, b) => a + b, 0) / newObj[el].length
  });
});

console.log(out);

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