Javascript-在数组中添加对象的名称/分数(键/值),以获得以名称/分数为键/值的新对象的总分



我已经被这个问题困扰了好几个小时,我似乎无法将分数相加,我尝试过的许多事情最终都给了我NaN或完全错误的分数。

示例输入为:

Example 1:
let ppl = [{name: "Anthony", score: 10},
{name: "Fred", score : 10},
{name: "Anthony", score: -8},
{name: "Winnie", score: 12}];

我的代码不是将多个条目的分数相加。

function countScores(people) {
// Your code here
let scoreCount = {};

people.forEach(person => {  // Go through the people 
let name = person.name; // Grab the name of the person
let score = person.score // Grab the score of the person

if (scoreCount[name]) {  //Check if name exists already and add scores together
scoreCount[score] += person.score;
console.log("Am I being accessed???")
}
score = Number(person.score);   // Grab the score of person and set it to score
name = person.name;      // Grab the name of the person
console.log(name, score);

scoreCount[name] = score;

})
console.log(scoreCount)
console.log("Endig Calculation of Scores....")
return scoreCount;
};

我的结果是:

+ expected - actual
{
-  "Anthony": -8
+  "Anthony": 2
"Fred": 10
"Winnie": 12
}

使用reduce()检查以下实现

let ppl = [{name: "Anthony", score: 10},
{name: "Fred", score : 10},
{name: "Anthony", score: -8},
{name: "Winnie", score: 12}];
function countScores(people) {
let result = people.reduce((res, record) => {
if(!res[record.name]) {
res[record.name] = record.score;
}else {
res[record.name] += record.score;
}
return res;
}, {});
return result;
}

console.log(countScores(ppl));

您可以使用reduce()进行

let data = [{name: "Anthony", score: 10},
{name: "Fred", score : 10},
{name: "Anthony", score: -8},
{name: "Winnie", score: 12}];

let result = data.reduce((a,v) =>{
let exists = a[v.name]
if(exists){
a[v.name] += v.score
}else{
a[v.name] = v.score
}
return a
},{})
console.log(result)

最新更新