我正在制作一款用户拥有不同身份证的在线游戏。
以下是创建新玩家的客户端代码:
var newPlayer = function(id){
return player[player.length]={
x:0,
y:0,
id:id
}
}
newPlayer(50)
会创建一个ID为50的玩家。
如何根据id
变量选择该播放器?
由于
答案 0 :(得分:2)
JavaScript数组的存储可能很稀疏,因此您只需执行以下操作:
function newPlayer(id) {
return player[id] = { x:0, y: 0, id: id };
}
function findPlayer(id) {
return player[id];
}
这导致最坏的情况, O(log N),但可能接近 O(1),以可能更多的存储为代价进行查找。
查。
答案 1 :(得分:0)
创建一个函数,迭代数组,返回一次
function findPlayer(id) {
for (var i = 0; i < player.length; i++) {
if (player[i].id == id) return player[i];
}
}
答案 2 :(得分:0)
var player = [];
newPlayer(123);
newPlayer(234);
使用Underscore或Lodash(或vanilla JS,如果您愿意):
var player123 = _.findWhere(players, { id: 123 });
等
如果您只按ID搜索,并且ID在所有玩家中都是唯一的,您可以将玩家存储在键值对象而不是数组中:
function newPlayer(id) {
player[id] = { x: 0, id: id }
}
通过查询:
var player123 = player[123];