Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
How to perform operations on nested array of objects inside an array using javascript?

I am trying to calculate the average on nested array objects fields which is inside an another array. Here is the array I defined:

    let arr = [
[{"category":"behavioural", "rating":3}, {"category":"technical", "rating":4.5}],
[{"category":"behavioural", "rating":1}, {"category":"technical", "rating":2.5}],
[{"category":"behavioural", "rating":4}, {"category":"technical", "rating":2}]
]

I want to calculate the average of ratings in its respective category and store it in an object.

Expected output:

"metricsaverage" : {
    "behavioral" : 2.66,
    "technical" : 3
}

Where 2.66 and 3 is the average of all ratings with its respective category from the nested array of objects.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Working Demo :

// Input array
let arr = [
[{"category":"behavioural", "rating":3}, {"category":"technical", "rating":4.5}],
[{"category":"behavioural", "rating":1}, {"category":"technical", "rating":2.5}],
[{"category":"behavioural", "rating":4}, {"category":"technical", "rating":2}]
];

// Converting multi-dimensional array into single dimension.
let singleDimensionArr = [].concat(...arr);

// grouping by category and resulting with an object using Array.reduce() method
const groupByCategory = singleDimensionArr.reduce((group, item) => {
  const { category } = item;
  group[category] = group[category] ?? [];
  group[category].push(item.rating);
  return group;
}, {});

// Finally calculating the average based on the category array we have.
Object.keys(groupByCategory).forEach((item) => {
    const len = groupByCategory[item].length;
    groupByCategory[item] = groupByCategory[item].reduce((a, b) => a + b)/len;
})

// result
console.log(groupByCategory);

about 4 years ago · Juan Pablo Isaza Denunciar

0

working example here: https://jsfiddle.net/galeroy/ot1pkvqg/4/

  let arr = [
      [{"category":"behavioural", "rating":3}, {"category":"technical", "rating":4.5}],
      [{"category":"behavioural", "rating":1}, {"category":"technical", "rating":2.5}],
      [{"category":"behavioural", "rating":4}, {"category":"technical", "rating":2}]
    ]

    var behavioralTotal = 0,
        behavioralItems = 0,
        technicalTotal = 0,
        technicalItems = 0;

    arr.forEach(function(outerItem){         
      outerItem.forEach(function(innerItem){
        if(innerItem.category === 'behavioural'){
          behavioralTotal += innerItem.rating;
          behavioralItems++;
        }
        else if (innerItem.category === 'technical')
        {
          technicalTotal += innerItem.rating;
          technicalItems++
        }
      })
    });

    console.log(
      'metricsaverage = { \n' +
        '"behavioral" : ' + (behavioralTotal/behavioralItems).toFixed(2) + ',\n' +
        '"technical" : ' + (technicalTotal/technicalItems).toFixed(2) + '\n' +
      '}'
    )
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda