Javascript 如何从一系列游戏对象中按类型计算成就?
很抱歉,如果以前有人问过类似的问题,我想不出一个表达我的问题的方法来找到结果 如果我有一个游戏对象数组Javascript 如何从一系列游戏对象中按类型计算成就?,javascript,arrays,object,Javascript,Arrays,Object,很抱歉,如果以前有人问过类似的问题,我想不出一个表达我的问题的方法来找到结果 如果我有一个游戏对象数组 const games = [{title: 'Halo 3', genre: 'FPS', achievements: 7}, {title: 'Fallout 3', genre: 'RPG', achievements: 6}, {title: 'Far Cry 3', genre: 'FPS', achievements: 12}] 我如何得到下面的结果,按流派将成就相加 { FPS
const games = [{title: 'Halo 3', genre: 'FPS', achievements: 7}, {title: 'Fallout 3', genre: 'RPG', achievements: 6}, {title: 'Far Cry 3', genre: 'FPS', achievements: 12}]
我如何得到下面的结果,按流派将成就相加
{ FPS: 19, RPG: 6}
以下是我目前掌握的情况,但并不完全正确:
const achievementsByGenreTally = (games, dataKey = 'genre') => {
return games
.reduce((acc, game) => {
if (game[dataKey]) {
acc[game[dataKey]] = game.achievements }
return acc
}, {})
})
任何帮助都将不胜感激!谢谢:您的解决方案几乎是正确的,但您需要对所有成就值求和,而不仅仅是将它们分配给对象的属性。此外,您还需要处理属性丢失时的情况,因为如果您尝试对任何未定义的数字求和,您将得到NaN
const achievementsByGenreTally = (games, dataKey = 'genre') => {
return games
.reduce((acc, game) => {
if (game[dataKey]) {
acc[game[dataKey]] = (acc[game[dataKey]] || 0) + game.achievements
}
return acc
}, {})
};