javascript:长度未知且索引名称未知的数组

时间:2016-11-02 19:26:42

标签: javascript arrays

我正在制作一个足球联赛的节目。

联盟的一个例子:

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 = [];

3 个答案:

答案 0 :(得分:1)

请改用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");
}

答案 1 :(得分:1)

您可以通过首先测试当前号码来增加团队成员的数量,如果它不存在,您可以在运行时将其初始化为0。所有这些都可以在一个具有逻辑OR(||)的表达式中完成:

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

在这种情况下,这不会破坏您之前拥有的值,就像简单的+ 1一样。

您应该将teamArray定义为对象,尽管它也适用于数组(因为它也是一个对象):

 teamArray = {}

这个名字当然有点令人困惑,但我会坚持下去。

每当你需要迭代你收集的团队时,你就可以使用这样的for循环:

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

答案 2 :(得分:0)

感谢您的帮助!

我现在这样做了:

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

增加了具有以下功能的玩家数量:

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