给定各种宝可梦战斗的JSON:
[
{
"battleID": "1",
"trainers": [
{
"LastName": "Ketchum",
"ForeName": "Ash"
},
{
"LastName": "Mason",
"ForeName": "Misty"
}
]
},
{
"battleID": "2",
"trainers": [
{
"LastName": "Mason",
"ForeName": "Misty"
},
{
"LastName": "Brock",
"ForeName": "Stuart"
},
{
"LastName": "Ian",
"ForeName": "Foster"
}
]
},
{
"battleID": "3",
"trainers": [
{
"LastName": "Brock",
"ForeName": "Stuart"
},
{
"LastName": "Ketchum",
"ForeName": "Ash"
}
]
}
]
我希望能够绘制一个网格,记录两个宝可梦训练师/玩家之间的匹配次数。一场比赛最多可以同时有4名玩家参与。
Ash Ketchum Misty Mason Brock Stuart Ian Foster
Ash Ketchum 2 1 1 0
Misty Mason 1 2 1 1
Brock Stuart 1 1 2 1
Ian Foster 0 1 1 1
我的代码:
class Trainer {
constructor(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
coBattles(trainer) {
var battles = 0;
jsonData.map(x => {
x.trainers.map(y => {
if (this.firstname === y.ForeName && this.lastname === y.LastName) {
x.trainers.map(z => {
if (trainer.firstname === z.ForeName && trainer.lastname === z.LastName)
battles++;
});
}
});
});
return battles;
}
}
var pokemonTrainers = [];
// Currently Undesirable as I want a 'unique' array of all participating trainers.
jsonData.forEach(x => {
x.trainers.forEach(y => {
var trainer = new Trainer(y.ForeName, y.LastName);
pokemonTrainers.push(trainer);
});
});
//Battles between Misty Mason and Brock Stuart
console.log(pokemonTrainers[1].coBattles(pokemonTrainers[3]));
//returns 1
我在寻求关于使用原生JS或第三方库优化此代码的建议。如何使其能够高效处理大量战斗数据(数百万条)。