javascript - 一个团队的所有目标的数量(来自 JSON)
问题描述
我有一个包含足球比赛数据的 JSON 文件
[
{
"game_id":"258716",
"game_date_start":"2016-08-15",
"season": "2016",
"team_1_id":"119",
"team_2_id":"120",
"team_1_goals_quantity":"2",
"team_2_goals_quantity":"1",
},
{
"game_id":"258717",
"game_date_start":"2016-09-15",
"season": "2016",
"team_1_id":"119",
"team_2_id":"122",
"team_1_goals_quantity":"1",
"team_2_goals_quantity":"1"
},
{
"game_id":"258718",
"game_date_start":"2016-07-15",
"season": "2016",
"team_1_id":"121",
"team_2_id":"119",
"team_1_goals_quantity":"1",
"team_2_goals_quantity":"1"
}
]
任务1。计算每支球队的比赛总数
任务 #2。计算球队的总进球数(在所有比赛中)
我正在使用 Vue.js。我以这种方式解决了任务#1:
countGames() {
var data = this.$store.getters.games;
var arr1 = [];
var obj1 = {};
//Here I got all unique Team IDs
function getMatches() {
for (var i in data) {
obj1[data[i].team_1_id] = (obj1[data[i].team_1_id] || 0) + 1;
obj1[data[i].team_2_id] = (obj1[data[i].team_2_id] || 0) + 1
};
Object.keys(obj1).forEach(function(el, data) {
arr1.push( [ el, obj1[el]] );
});
};
getMatches();
var result = arr1.map(
([team_id, matches]) => ({team_id, matches}) //here I got { {team_id: "119", matches: 3}, {team_id: "120", matches: 1} ... }
);
return result;
}
有用。但我不知道如何解决任务 #2 - 计算每支球队在所有比赛中的总进球数。问题在于,有时团队的唯一 ID 可能位于 team_1_id,有时位于 team_2_id(如 JSON 示例中的团队“119”i)。
请帮我写这个脚本。
解决方案
您可以映射数组的每个对象并增加相应的计数器以获取您的数据,如下所示:
let totalGames = {},
totalGoals = {};
data.map( game => {
//count games team 1
if (!totalGames.hasOwnProperty(game.team_1_id)) {
totalGames[game.team_1_id] = 1;
} else {
totalGames[game.team_1_id] += 1;
}
//count games team 2
if (!totalGames.hasOwnProperty(game.team_2_id)) {
totalGames[game.team_2_id] = 1;
} else {
totalGames[game.team_2_id] += 1;
}
//count goals team 1
if (!totalGoals.hasOwnProperty(game.team_1_id)) {
totalGoals[game.team_1_id] = parseInt(game.team_1_goals_quantity);
} else {
totalGoals[game.team_1_id] += parseInt(game.team_1_goals_quantity);
}
//count goals team 2
if (!totalGoals.hasOwnProperty(game.team_2_id)) {
totalGoals[game.team_2_id] = parseInt(game.team_2_goals_quantity);
} else {
totalGoals[game.team_2_id] += parseInt(game.team_2_goals_quantity);
}
});
推荐阅读
- ssis - SSDT 2017 安装失败 无法打开配置注册表项
- node.js - Alexa API 技能 - nodejs 获取请求未执行
- bots - 我的 GupShup 机器人迷路了?
- ios - ios - 如何将 mtl 纹理文件应用于 OBJ
- typescript - 如何注释一个接受类并返回具有静态成员的工厂的函数?
- python - 在python中比较列表和文件以进行匹配
- javascript - Javascript 将响应对象解析为对象数组
- jquery - 如果页面上存在动态创建的跨度类,则显示 div
- javascript - 如何更新 Vue.JS 中的插槽
- c++ - 为什么注入的类名有时不被视为类模板中的模板名?