JQuery和Javascript在一个关联数组中跟踪两个玩家
JQuery and Javascript to keep track of two players in one Associative Array?
我正在制作一款Simon游戏,两名玩家同时对抗AI和其他玩家。为了从长远来看简化事情,我重写了许多代码,以便将所有内容保持在单个"玩家"数组中。然而,我在思考如何能够跟踪游戏中的某些事情时遇到了麻烦,例如轮到谁了,或者哪个对象数据进入了。
//player1和player2都= $("#name").val()其中#name是输入框并被验证
player[player.length] = {
name: player1,
points: 0,
gamesWon: 0,
gamesLost: 0,
gamesTied: 0,
sequence: null,
correct: false
};
player[player.length] = {
name: player2,
points: 0,
gamesWon: 0,
gamesLost: 0,
gamesTied: 0,
sequence: null,
correct: false
};
这将是一个不断增长的数组,其中存储了无限数量的玩家。例如,在后面的代码中,如果我想要修改第二个玩家的分数,我是否必须添加:
for(i=0; i < player.length; i++){if (player[i].name === $("#name").val()) {
//在这里做一些事情;}}
是否有更简单的方法来找到球员并修改数组位置的值?或者找到我需要的其他东西?
您可以使用jQuery.grep( )
来搜索数组。因为您有一个对象数组,所以grep( )
函数允许您匹配特定的条件,包括对象的属性。这个函数返回在数组中查找的对象,而不影响原始数组。用法示例:
var players = [];
player[0] = {
name: player1,
points: 0,
gamesWon: 0,
gamesLost: 0,
gamesTied: 0,
sequence: null,
correct: false
};
player[1] = {
name: player2,
points: 0,
gamesWon: 0,
gamesLost: 0,
gamesTied: 0,
sequence: null,
correct: false
};
$player2 = $.grep( player, function( p ) { p.name === "player2"; } ); //Returns the player2 object
关于grep( )
函数的文档可以在http://api.jquery.com/jquery.grep/找到,这个stackoverflow答案也引用了它。
你可以根据球员的号码和名字来索引。
var players = []
function joinGame(playerName) {
var playerNumber = players.length;
players[playerName] = {
name: playerName,
number: playerNumber
};
players[playerNumber] = players[playerName];
}
joinGame('player0');
joinGame('player1');
console.log('-- by player number --');
console.log(players[0]);
console.log(players[1]);
console.log('-- by player name --');
console.log(players['player0'])
console.log(players['player1']);
console.log('-- forEach on the array --');
players.forEach(function(p) {
console.log(p);
});
http://jsfiddle.net/85X3c/相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 如何使用offer/answer交换来自两个对等连接的流
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- 为什么 GA 跟踪代码以两个(而不是一个).push 命令开头
- 如何在谷歌跟踪代码管理器中触发两个不同的基于gtm.timer的事件
- 跟踪两个下拉列表中的值
- 谷歌分析代码跟踪子域(跟踪两个页面)
- JQuery和Javascript在一个关联数组中跟踪两个玩家
- 谷歌分析:在多跟踪设置中不接收两个数据流
- 跟踪聊天窗口事件,我如何让这两个脚本一起工作
- 跟踪 C# 控制器和视图中的两个变量
- 谷歌分析,不能跟踪两个事件之一的推