gpt4 book ai didi

javascript - slice() 方法的问题,数组显然是自动排序的,但实际上并没有

转载 作者:行者123 更新时间:2023-11-30 13:57:11 24 4
gpt4 key购买 nike

编辑:问题已解决,我遇到的问题是 splice() 属性导致我的数组以这种方式交互,它们没有自动排列。

我正在尝试制作一个面向对象的游戏,得到一个构造函数类,它创建与您指定的自定义敌人一样多的自定义敌人,一个循环将构造的对象推送到一个数组中并将它们存储在那里。玩家也存储在服务器端数组中(这是一个多人游戏,只是还没有学习节点,但我打算很快学习,所以我希望这个代码是可扩展的)。

敌人是从数组的索引中单独选择的,并且可以与玩家互动,除了一个麻烦之外,它的功能齐全。

一些代码示例,当一些敌人或玩家死亡时,麻烦就来了。

class Enemy
{
constructor(args)
{
this.target = player[0];///Default

this.kill = function() {
//kill logic
enemy[1].splice(this.indexid,1);///Despawns
};
};
};

class Player
{
constructor(args)
{
this.target = enemy[/*gets changed using a method*/]
//method here, removed to simplify

this.kill = function() {
//kill logic
player[0].splice(this.indexid,1);///Despawns
};
};
};

不用担心 indexid,它是一个整数,一旦生成,就会分配给每个与其数组索引匹配的敌人,因此我可以操作。

我一直在测试游戏逻辑是否在 google chrome 控制台中工作,这是我遇到麻烦的代码部分,因为当敌人死亡时,数组会自动排列和另一个敌人占据它的位置,导致玩家交换目标。小问题,但是当实际玩家 死亡时,占据其相同数组索引的玩家将成为敌人的目标,并且可能会发生一些不可预测的事情。 indexid 也停止匹配实际的数组索引,因为它仅在生成敌人时设置:s

虽然这个数组索引 id 是临时的,但我不希望浏览器自动排列索引,因为这会破坏所有代码:(

最佳答案

Array#splice更改以下项目的索引。

为什么不使用undefinednull 作为数组的值。这种方法不会改变索引,并且很容易实现。

关于javascript - slice() 方法的问题,数组显然是自动排序的,但实际上并没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57025895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com