在 Javascript 中将 Set 集合转换为数组会少返回一个项目

Transforming a Set Collection to an Array in Javascript is returning one less item

提问人:Gustavo Kimura 提问时间:3/10/2023 最后编辑:Michael M.Gustavo Kimura 更新时间:3/10/2023 访问量:27

问:

我正在使用 HTML Canvas + Javascript 开发一个游戏项目。

有一个名为 entities 的 Set Collection,它位于一个名为 Level 的类中。

然后:

class Entity {
    constructor (name) {
        this.name = name;
    }
}

class Level {
    constructor () {
        this.entities = new Set([
            new Entity(),
            new Entity(), 
            new Entity(), 
        ]);
    }
}

const level = new Level();

但是,当我为..在这个集合中,它只是忽略了最后一项。

似乎在从 Set Collection 转换为 Array 时,它会从列表中删除最后一项:

const entities = level.entities;

输出console.log(entities);

输出console.log([...entities]);

如第一张图片所示,Set.size 等于 6。

但是,在第二张图像中,Array.length 等于 5。

换句话说,最后一件物品丢失了。

任何经历过这种情况的人都能提供帮助吗?

JavaScript 数组 解析

评论

0赞 Michael M. 3/10/2023
您能否提供用于在图像中创建数据的代码?事实上,您的代码将按预期工作。
0赞 Gustavo Kimura 3/10/2023
@MichaelM。完整项目位于 GitHub (github.com/GustavoKimura/super-mario)。图像中显示的数据的创建分为几个文件。但是,我可以在这里发布完整的 Set Collection 和 Array。
0赞 Unmitigated 3/10/2023
你为什么要在这里建造一个?Set
0赞 Michael M. 3/10/2023
创建一个堆栈代码段来帮助调试也会很有帮助。
0赞 Gustavo Kimura 3/10/2023
@Unmitigated 因为我希望玩家和敌人的实体在关卡中永远不会具有相同的属性。

答: 暂无答案