繁体   English   中英

javascript:具有未知长度和未知索引名称的数组

[英]javascript: array with unknown length and unknown index names

我正在制作一个足球联赛的程序。

联赛示例:

team1 team2 team3

我想为每个球队节省(增加)球员数量

var teamArray = [];
teamArray[team1] = 1;
teamArray[team2] = 2;

我正在执行一些功能,例如:

function 1(){}
function 2(){}
function .(){}
function .(){}
function .(){}
function n(){}

但这仅在我“教” javscript该数组是整数数组时才有效……

teamArray[team1] = 0;
teamArray[team1] = teamArray[team1] + 1;

但问题是每次我使用其中一个函数时,我都必须将数组元素设置为0,这会使整个计算出错...

有人可以给我一个提示吗?

我的想法是要从一开始就将每个数组元素设置为0,但是我不知道在我的游戏开始时我今天将拥有多少支球队,所以我为什么要像这样实现数组:

var teamArray = [];

请改用JavaScript对象。 就像是:

var teamObject = {
   team1: 3,
   team2: 5,
   team3: 7,
};

或者,也许是一组对象:

var teamArray = [
   { name: 'team1', players: 3 },
   { name: 'team2', players: 5 },
   { name: 'team3', players: 7 }
];

如果您想要获得或设置玩家人数,则更易于访问该对象:

teamObject.team1 += 1;

但是数组更容易遍历并且可以排序:

for (var i=0,j=teamArray.length; i<j; i++) {
  console.log(teamArray[i].name + " has " + teamArray[i].players + " players");
}

您可以通过首先测试当前数字来增加团队成员的数量,如果不存在,则可以动态地使用0对其进行初始化。 使用逻辑或( || )在一个表达式中可以完成所有操作:

 teamArray[team1] = (teamArray[team1] || 0) + 1;

在这种情况下,这不会破坏您以前的值,并且像简单的+ 1一样工作。

您应该将teamArray定义为对象,尽管它也可以与array一起使用(因为它也是一个对象):

 teamArray = {}

这样的名称当然有点令人困惑,但我会坚持下去。

每当您需要遍历已收集的团队时,都可以使用如下所示的for循环:

for (var team in teamArray) {
    console.log(team, teamArray[team]);
}

感谢你的帮助!

我现在是这样的:

var listItems = $("#teamsDropdown li");
    listItems.each(function(idx, li) {
        var team = $(li).text();
        TeamPlayerQuantities[team] = 0;             
    });

并通过以下功能增加玩家数量:

function1(team){
    TeamPlayerQuantities[team] ++;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM