Javascript 地图的最后一个条目未被删除?

Javascript 地图的最后一个条目未被删除?,javascript,dictionary,Javascript,Dictionary,作为一名前锋,我正在尝试为游戏创建一个实体/组件/系统设计。我要做的第一件事是处理实体的创建和删除。我选择尝试使用本地地图来实现这一点 出于某种原因,当我运行这段代码时,我看到了预期的行为,直到我到达映射的最后一个元素,在那里我看到它的更新被多次调用,而条目似乎没有被删除 代码: 实际产量: 我没意识到我把物体放在了不同的位置。哎呀( 如果在相同的位置创建对象并进行相应的更新,则它可以正常工作 class Vector{ constructor(x, y){ this.x = x; t

作为一名前锋,我正在尝试为游戏创建一个实体/组件/系统设计。我要做的第一件事是处理实体的创建和删除。我选择尝试使用本地地图来实现这一点

出于某种原因,当我运行这段代码时,我看到了预期的行为,直到我到达映射的最后一个元素,在那里我看到它的更新被多次调用,而条目似乎没有被删除

代码:


实际产量:



我没意识到我把物体放在了不同的位置。哎呀(

如果在相同的位置创建对象并进行相应的更新,则它可以正常工作

class Vector{
   constructor(x, y){ this.x = x; this.y = y; }
}

class Enemy{
   constructor(id, x, y){
      this.id = id;
      this.pos = new Vector(x, y)
   }
   update(){
      this.pos.x++;
      console.log(Game.entities)
      if (this.pos.x > 10) Game.dispatch(this.id)
   }
}

const Game = {
    start: function(){
       this.entities = new Map;
       for (let i = 0; i<5; i++){
            const sid = Math.random();
            this.entities.set(sid, new Enemy(sid, i*20, 20))
       }
       this.tick(0)
    },
    dispatch: function(id){
        this.entities.delete(id)
    },
    tick: function(){
        for (let entity of this.entities.values()) {
            entity.update();
        }
        setTimeout(this.tick.bind(this), 100)
    }
}
Game.start()
test.js:12 Map(5) {0.5025040680322241 => Enemy, 0.42078144104682513 => Enemy, 0.26799686976172143 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(5) {0.5025040680322241 => Enemy, 0.42078144104682513 => Enemy, 0.26799686976172143 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(4) {0.5025040680322241 => Enemy, 0.26799686976172143 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(3) {0.5025040680322241 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(2) {0.5025040680322241 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(5) {0.5025040680322241 => Enemy, 0.42078144104682513 => Enemy, 0.26799686976172143 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(5) {0.5025040680322241 => Enemy, 0.42078144104682513 => Enemy, 0.26799686976172143 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(4) {0.5025040680322241 => Enemy, 0.26799686976172143 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(3) {0.5025040680322241 => Enemy, 0.7289429408250698 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(2) {0.5025040680322241 => Enemy, 0.31514175919106435 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}
test.js:12 Map(1) {0.5025040680322241 => Enemy}