javascript项拼接自我列表

Aki*_*nos 8 javascript arrays

如果我有一个对象数组,那么该项目是否有可能将自己从包含它的数组中拼接出来?

例如:如果一个坏人死了,他会将自己从一群活跃的敌人中分离出来.

我可能听起来很疯狂,但这种能力会大大简化我的代码,所以我希望有一些很酷的东西=)

Sea*_*ira 14

你这样做的方式如下:

var game_state = { active_enemies: [] };
function Enemy() {
    // Various enemy-specific things go here
}
Enemy.prototype.remove = function() {
    // NOTE: indexOf is not supported in all browsers (IE < 8 most importantly)
    // You will probably either want to use a shim like es5-shim.js
    // or a utility belt like Underscore.js
    var i = game_state.active_enemies.indexOf(this);
    game_state.active_enemies.splice(i, 1);
}
Run Code Online (Sandbox Code Playgroud)

看到:

Notta bene:这种处理游戏状态的方式存在一些问题.确保你是一致的(即没有敌人从活跃的敌人列表中移除自己,但英雄从地图中移除敌人).随着代码变得越来越复杂,它也会让事情变得难以理解(你的敌人不仅是游戏中的敌人,而且还是地图状态管理者,但它可能不是唯一的地图状态管理器.当你想要进行更改时对于如何管理地图状态,您希望确保代码的结构只需要在一个地方[最好]更改它.


gil*_*ly3 7

假设坏人知道他在哪个名单,为什么不呢?

BadGuy.prototype.die = function()
{
    activeEnemies.splice(activeEnemies.indexOf(this), 1);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,对于indexOf在Arrays 上使用的旧浏览器,您需要手动添加它.