为什么这个函数(将对象推送到数组)会导致 p5.js 崩溃?

我正在构建一个进化模拟应用程序,如果某个生物的健康度超过 75%,它就会繁殖,然后健康度减半。为此,我创建了对象所属类的新实例,然后将所述对象推送到存储其他生物体的数组。由于我不知道的原因,这会导致 p5.js 崩溃。


我试图减少生物体的数量 (3) 并将其写为类的函数。


var organisms = []; // array where organisms instances go


function reproduce(){

  for (let i = 0; i < organisms.length; i++){

     if(organisms[i].life > 0.75){

        // create a genetically similar size

        let size = organisms[i].size + (random() > 0.5 ? 1 : -1 * random() * 2);   

        // declare instance

        let org = new Organism(width, height, size)

        organisms.push(org);

        // prevent infinite reproduction

        organisms[i].life -= 0.5;

        }

    }

}

我希望这只是创建新的类实例,但它会导致 p5.js 崩溃。


炎炎设计
浏览 104回答 2
2回答

largeQ

您已经创建了一个可能永远不会结束的循环条件。for&nbsp;(let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;organisms.length;&nbsp;i++){在第一次迭代中,假设生物体有 5 个元素。如果if满足下一行的条件,您将向organisms数组中添加另一个元素。下一次迭代将更改 中的下一个元素organisms,但是由于您的数组每次都增加一个,因此您永远不会到达数组的末尾!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript