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

时间:2014-04-23 19:23:52

标签: javascript arrays html5 object

我正在制作一款用户拥有不同身份证的在线游戏。

以下是创建新玩家的客户端代码:

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

newPlayer(50)会创建一个ID为50的玩家。

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

由于

3 个答案:

答案 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];