嘿伙计们,任何人都可以向我解释这段代码吗?

hey guys, can anyone explain this piece of code to me?

我目前正在学习 JavaScript 并且必须完成一项编码挑战,挑战是: “创建一个名为 'scorers' 的对象,其中包含作为属性得分的球员的姓名和作为值的进球数。在这个游戏中它将如下所示: { 纳尔比:1, 胡梅尔斯:1, 莱万多夫斯基:2 }” 解决方案 : “遍历数组,并将数组元素添加为对象属性, 然后在我们遇到某个元素的新出现时增加计数

对象:

const game = {
 scored: ['Lewandowski', 'Gnarby', 'Lewandowski', 'Hummels']
};

解决方案是:

const scorers = {};
for (const player of game.scored) {
  scorers[player] ? scorers[player]++ : (scorers[player] = 1);
}

结果是:

[Lewandowski: 2, Gnarby: 1, Hummels: 1]

我不明白 得分手[球员] 到底发生了什么?得分手[球员]++ : (得分手[球员] = 1); 得分手[球员]++ 做什么?

它是一个三元运算符,用于检查 game 是否包含 player 的值作为 属性。如果是这样,它会增加 属性 的值。否则,它将其设置为 1.

也可以这样改写:

if(scorers[player]){
    scorers[player]++;
} else {
    scorers[player] = 1;
}

如果 scorers 没有 player 的值作为 属性,scorers[player] 将 return 未定义,当强制为布尔值时, 是 false.