Javascript 如何按键对JSON数组进行分组?
我有一组保存游戏数据的对象。数组中的每个对象都有日期、位置、游戏类型、赢家和输家Javascript 如何按键对JSON数组进行分组?,javascript,jquery,json,Javascript,Jquery,Json,我有一组保存游戏数据的对象。数组中的每个对象都有日期、位置、游戏类型、赢家和输家 我希望我的输出是一个具有player、wins和loss属性的对象数组(即,输出将按player分组,而数组输入中的每个对象都有一个winner player和一个loss player)。输出将告诉我,在所有玩过的游戏中,每个玩家有多少赢家和输家。我假设您的游戏数据结构如下所示 const gameData = [{ date: '12/02/2018', location: 'Germany', g
我希望我的输出是一个具有player、wins和loss属性的对象数组(即,输出将按player分组,而数组输入中的每个对象都有一个winner player和一个loss player)。输出将告诉我,在所有玩过的游戏中,每个玩家有多少赢家和输家。我假设您的游戏数据结构如下所示
const gameData = [{
date: '12/02/2018',
location: 'Germany',
gameType: 'any',
winner: 'Joe Smith',
loser: 'Leo Messi',
}, {
date: '20/02/2018',
location: 'Australia',
gameType: 'any',
winner: 'Joe Smith',
loser: 'Cristiano',
}, {
date: '23/02/2018',
location: 'England',
gameType: 'any',
winner: 'Alexi Sanchez',
loser: 'Joe Smith',
}]
那么这就是可能的解决方案。
const gameData=[{
日期:2018年2月12日,
地点:'德国',
游戏类型:'任何',
获胜者:“乔·史密斯”,
失败者:“里奥·梅西”,
}, {
日期:2018年2月20日,
地点:'澳大利亚',
游戏类型:'任何',
获胜者:“乔·史密斯”,
失败者:“克里斯蒂亚诺”,
}, {
日期:2018年2月23日,
地点:'英格兰',
游戏类型:'任何',
获胜者:“亚历克西·桑切斯”,
失败者:“乔·史密斯”,
}]
const playerObjects=游戏数据。减少((acc,游戏)=>{
if(acc[游戏赢家]){
acc[game.winner]。wins=acc[game.winner]。wins+1 | 1;
}else acc[game.winner]={赢:1,输:0};
如果(acc[游戏输家]){
acc[game.loss].loss=acc[game.loss]['loss']+1 | | 1;
}else acc[游戏输家]={赢:0,输:1};
返回acc;
}, {});
const results=Object.keys(playerObject).reduce((arr,key)=>{
康斯特玩家={
姓名:key,,
wins:PlayerObject[key]。wins,
Loss:PlayerObject[key]。Loss,
};
arr.push(玩家);
返回arr;
}, []);
控制台日志(结果)代码>共享对象和输出格式