Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

136
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!