如何在javascript中使用特定变量来定位对象

如何在javascript中使用特定变量来定位对象,javascript,arrays,html,object,Javascript,Arrays,Html,Object,我正在制作一个在线游戏,用户有不同的ID 以下是创建新播放器的客户端代码: var newPlayer = function(id){ return player[player.length]={ x:0, y:0, id:id } } newPlayer(50)将创建一个ID为50的播放器 如何根据其id变量选择该播放器 谢谢创建函数,迭代数组,找到后返回 function findPlayer(id) { for (var i = 0

我正在制作一个在线游戏,用户有不同的ID

以下是创建新播放器的客户端代码:

var newPlayer = function(id){
   return player[player.length]={
      x:0,
      y:0,
      id:id
   }
}
newPlayer(50)
将创建一个ID为50的播放器

如何根据其
id
变量选择该播放器


谢谢

创建函数,迭代数组,找到后返回

function findPlayer(id) {
    for (var i = 0; i < player.length; i++) {
        if (player[i].id == id) return player[i];
    }
}
函数findPlayer(id){
对于(变量i=0;i
JavaScript数组的存储可以是稀疏的,因此您可以执行以下操作:

function newPlayer(id) {
  return player[id] = { x:0, y: 0, id: id };
}

function findPlayer(id) {
  return player[id];
}
这将导致最坏情况下的O(logn),但可能接近O(1),以潜在的更多存储为代价进行查找

查克

使用下划线或Lodash(或香草JS,如果您愿意):

等等

如果只按id搜索,且id在所有玩家中是唯一的,则可以将玩家存储在键值对象中,而不是数组中:

function newPlayer(id) {
    player[id] = { x: 0, id: id }
}
查找途径:

var player123 = player[123];
function newPlayer(id) {
    player[id] = { x: 0, id: id }
}
var player123 = player[123];