【问题标题】:How do I target an object with a specific variable in javascript如何在javascript中定位具有特定变量的对象
【发布时间】:2014-04-23 19:23:52
【问题描述】:

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

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

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

newPlayer(50) 会创建一个 ID 为 50 的播放器。

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

谢谢

【问题讨论】:

    标签: javascript arrays html object


    【解决方案1】:

    JavaScript 数组的存储空间可以是稀疏的,因此您只需执行以下操作:

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

    这导致在最坏的情况下,O(log N),但可能接近 O(1),以潜在的更多存储为代价进行查找。 p>

    查克。

    【讨论】:

      【解决方案2】:

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

      function findPlayer(id) {
          for (var i = 0; i < player.length; i++) {
              if (player[i].id == id) return player[i];
          }
      }
      

      【讨论】:

        【解决方案3】:
        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];
        

        【讨论】:

          猜你喜欢
          • 2016-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-23
          • 1970-01-01
          • 1970-01-01
          • 2010-09-13
          相关资源
          最近更新 更多