首页 > 解决方案 > 有没有办法在不知道位置但属性的情况下从数组中删除对象?

问题描述

我是新来的,我真的很想问你是否可以在事件中删除特定对象。实际上,我正在编写的游戏有 2 个主要事件:.onPlayerJoin.onPlayerLeave. 我设置了这个,所以当玩家加入时,它会在已经声明的对象数组中创建一个带有name,id的对象。auth

当玩家离开时,我希望删除该对象!我正在为此苦苦挣扎,因为主要问题是在不知道位置的情况下删除该对象。此外,对象没有名称(除了在内部声明新对象.onPlayerJoin)。

我会在这里给你一些代码:

var playerz = [];
room.onPlayerJoin = function (player) {
  var newPlayer = {
    name: player.name,
    id: player.id,
    auth: player.auth,
  };
  playerz.push(newPlayer);
};

room.onPlayerLeave = function (player) {
  playerz.splice(playerz.indexOf(player.name));
};

这不起作用,因为它只是删除了一个对象,而不是我想要的那个。如果一个房间里有 5 个玩家并且一个人离开,我希望那个人的对象被移除......

哦,我记得你player.nameplayer.idplayer.auth是对象的属性player,我不必声明,因为它们已经内置在游戏中。而且,player.name其他的都是非常可变的,这意味着如果你把

console.log(player.name);

无论是在.onPlayerJoin.onPlayerLeave它都会控制台加入和离开的玩家的名字,但是如果你设置一个.onplayerChat你放 message === "hello"player.name的玩家,将是写你好的玩家。

我尽可能地解释了它!祝你有美好的一天!

标签: javascriptarraysobject

解决方案


推荐阅读