Как получить сумму нескольких массивов в массиве объектов?

1

Мне было интересно, как вы получаете сумму нескольких массивов в массиве объектов. Мой код выглядит следующим образом:

const employeeList = [    

    {
    "name": "Ahmed",
    "scores": [
    "5",
    "1",
    "4",
    "4",
    "5",
    "1",
    "2",
    "5",
    "4",
    "1"
    ]
    },
    {
    "name": "Jacob Deming",
    "scores": [
    "4",
    "2",
    "5",
    "1",
    "3",
    "2",
    "2",
    "1",
    "3",
    "2"
    ]
    }];

var sum = 0;

for(let i = 0; i < employeeList.length; i++){
  var eachScore = employeeList[i].scores;
  const b = eachScore.map(Number);
  console.log(b);

  sum += parseInt(b);//this is the code that doesn't work

}

console.log(sum);

Поэтому проблема заключается в том, что я могу собрать два массива в консольный журнал, но я не уверен, как это сделать для суммирования каждого массива. Когда я делаю sum + = parseInt (b), он просто регистрирует, сколько элементов находится в массив (9). и когда я делаю без parseInt, он объединяет числа вместе, но не суммирует их. Я хотел бы использовать метод.split() для разделения массивов и суммирования их по отдельности, но я не совсем понял, как сделать это еще.

Теги:
arrays
for-loop
sum

3 ответа

0
Лучший ответ

Поскольку b представляет собой массив чисел, вы не можете использовать его + с ним, если вы не хотите, чтобы строка, связанная с запятой. Наиболее функциональный способ суммирования массива - использовать reduce, которое можно использовать для перебора элементов и добавления их в накопитель:

b.reduce((a, b) => a + b);

Если вы хотите узнать частичные суммы, я бы использовал .map чтобы преобразовать каждый объект в массив employeeList в сумму их баллов, извлекая свойство scores и используя reduce чтобы суммировать их все:

const employeeList=[{"name":"Ahmed","scores":["5","1","4","4","5","1","2","5","4","1"]},{"name":"Jacob Deming","scores":["4","2","5","1","3","2","2","1","3","2"]}]

const sum = (a, b) => Number(a) + Number(b);
const output = employeeList.map(({ scores }) => scores.reduce(sum));
console.log(output);
// If you want to sum up the results into a single number as well:
console.log(output.reduce(sum));
  • 0
    Большое спасибо за объяснение. это помогает тонну!
0

Может быть, это поможет:

var parsedScores = [];
var scores = [
   "4","2","5","1","3","2","2","1","3","2"
];
let total = 0;
scores.forEach(el => {
   parsedScores.push(parseInt(el))
})
for (let score in parsedScores) {
   total += parsedScores[score]
}
console.log(total);
0

Вы можете использовать массив для вычисления суммы:

const employeeList = [    
{
  "name": "Ahmed",
  "scores": [
  "5",
  "1",
  "4",
  "4",
  "5",
  "1",
  "2",
  "5",
  "4",
  "1"
  ]
},
{
  "name": "Jacob Deming",
  "scores": [
  "4",
  "2",
  "5",
  "1",
  "3",
  "2",
  "2",
  "1",
  "3",
  "2"
  ]
}];

var sum = 0;

for(let i = 0; i < employeeList.length; i++){
  let eachScore = employeeList[i].scores;
  let b = eachScore.reduce((total,current)=>{
    total += +current;
    return total;
  },0);
  console.log(b);

  sum += b;
}

console.log(sum);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню