如何从数组中删除一个对象,其中包含一个函数

时间:2015-07-25 11:19:01

标签: javascript arrays

我想通过使用内部功能来移除玩家[0]。这个例子是我的第一个想法,但它没有用,请帮助我。

    // Stores the players
    var players = [];

    // Prototype of a new player
    var newPlayer = {
      hp: 100,
      xCord: 100,
      yCord: 100,

      // My try of removing player from inside itself
      removePlayer: function(){
          players.splice(0, 1);
      }
    }

    // Push the newPlayer prototype into the players array
    players.push(newPlayer);

    // Try to remove the player
    players[0].removePlayer();

3 个答案:

答案 0 :(得分:1)

而不是0,请在删除功能中尝试.indexOf(this)。这将删除任何位置的元素:



var players = [];

var newPlayer = {
  hp: 100,
  xCord: 100,
  yCord: 100,

  removePlayer: function() {
    players.splice(players.indexOf(this), 1);
  }
}

players.push("test");

players.push(newPlayer);

players.push("something");

console.log(players);

players[1].removePlayer();

console.log(players);




答案 1 :(得分:0)

你错了player[0].removePlayer();。将player[0]替换为newPlayer,您就可以了! ...请参阅@georg的答案,即使这样做也不是"正确的" #34;

作为旁注,请尝试使用console.table查看您的阵列内容(仅适用于Chrome和基于Chrome的浏览器)。

<强>更新

我认为你有错误:你的对象(player)依赖和/或修改不属于它自己的东西(players)。据我所知,这可能是你想要考虑的事情;但是如果你只是在玩,而不是认真地设计这些东西,那就没关系了。

答案 2 :(得分:-1)

我不知道你的意思

  

没有工作

如果你将console.log(players);放在代码之后,你会发现播放器Array是空的,所以你的代码可以工作。