【问题标题】: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];