Мне было интересно, как вы получаете сумму нескольких массивов в массиве объектов. Мой код выглядит следующим образом:
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() для разделения массивов и суммирования их по отдельности, но я не совсем понял, как сделать это еще.
Поскольку 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));
Может быть, это поможет:
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);
Вы можете использовать массив для вычисления суммы:
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);