如何从更新中修改对象并删除旧密钥?

时间:2016-06-21 12:14:54

标签: javascript

我正在创建一个多人游戏,我在javascript中有一个对象,有许多键和值。

此对象称为播放器,用于保存有关连接到游戏服务器的每个播放器的信息。

name是对象的键,然后对象的值是Player对象,其中包含xy,{{1}等信息等等。

我不断向服务器发送请求以获取有关玩家的最新信息。

因为这种情况经常发生,所以我不希望每次都重置level对象(players),所以相反,我用任何来更新对象新的信息。

目前我正在检查players = {},如果是,我会像这样更新对象:

if name in players

否则,我只需创建一个新的players[name].x = x; players[name].y = y; // etc. 对象,并将其添加到Player对象中。 (例如,如果连接了新玩家)

问题是,如果已经在players中的玩家不再在服务器的更新信息中(即玩家已断开连接),我该如何从对象中删除它们。

是否需要循环播放players,如果播放器不在更新的信息中,请将其从对象中删除,或者有更简单的方法吗?

如果没有别的办法,那么重置字典并添加数据是否更好?感觉这不是做这样简单事情的最好方法。

到目前为止,这是我的代码:

players

所有帮助表示赞赏!提前谢谢!

1 个答案:

答案 0 :(得分:1)

因此,您可以选择从players词典中删除过期数据,还是每次都从头开始重建?

我认为答案很大程度上取决于您拥有多少数据。如果你最多有20名球员,那可能并不重要。如果你有100万玩家,那就不一样了。

如果你想确定,最好的办法就是衡量它。尝试使用您希望能够处理的玩家数量最多的两种解决方案,并了解对性能的影响。

或者只使用最简单的实现,看看它是否足以满足您的需求。在您需要之前优化没有意义。

就个人而言,我只是循环浏览players以删除过时的数据。如果表现不够好,那我就进行优化。